- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
此代码工作正常并更新我的“TextView”并显示“Toast”这就是我的头痛,因为我试图传递一个可运行的对象,而不包含我的 UiHandler,因为它应该是更新我的 UI 线程的桥梁,但我的 Activity 已更新,没有任何错误??????这不应该是 CustomHandlerThread 应该是一个不同的线程
为什么会发生这种情况?
My Activity
公共(public)类 TestActivity 扩展 BaseActivity {
Runnable task;
@BindView(R.id.send_test_message)
Button send_test_message;
private Handler mUiHandler = new Handler();
private MyWorkerThread mWorkerThread;
@Override
public void initViews() {
}
@Override
public void attachViewsListeners() {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_activity);
ButterKnife.bind(this);
task = new Runnable() { ///this is normally work I have no problem with
///that
@Override
public void run() {
mUiHandler.post(new Runnable() {
@Override
public void run() {
send_test_message.setText("Change--->1");
}
});
}
};
}
@Override
protected void onStart() {
super.onStart();
mWorkerThread = new MyWorkerThread("myWorkerThread");
mWorkerThread.start();
mWorkerThread.prepareHandler();
mWorkerThread.postTask(task);
mWorkerThread.postTask(new Runnable() { /// why this task work with no
///error ?
@Override
public void run() {
send_test_message.setText("Change--->2");
}
});
}
@Override
protected void onDestroy() {
mWorkerThread.quit();
super.onDestroy();
}
my HandlerThread
//MyWorkerThread.java
public class MyWorkerThread extends HandlerThread {
Handler mWorkerHandler;
public MyWorkerThread(String name) {
super(name);
}
public void postTask(Runnable task) {
mWorkerHandler.post(task);
}
public void prepareHandler() {
mWorkerHandler = new Handler(getLooper());
Log.e("MyWorkerThread--->",Looper.myLooper().getThread().getName()); //-->main
Log.e("MyWorkerThread--->",getLooper().getThread().getName());//-->//myWorkerThread
Log.e("MyWorkerThread--->",Thread.currentThread().getName()); //-->main
}
}
我关注了这个link作为引用
是我的线程运行在MainThread上还是getLooper()初始化我的 HandlerThread 和 MainThread Looper ,那些日志消息是真的
最佳答案
After fill day of debugging i Found out That if i post A Runnable to my mWorkerThread with sleep() as here i got " Only the original thread that created a view hierarchy can touch its views." as should be.. but until I know why it not works without it I wish it would help some one.
try {
TimeUnit.SECONDS.sleep(2);
send_test_message.setText("Change--->");
} catch (Exception e) {
e.printStackTrace();
}
关于java - Android HandlerThread 在没有 UiHandler 的情况下更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47660631/
我目前在使用 @UiHandler 注释实现按钮事件时遇到问题。在我的 .xml 文件中,我将按钮定义为 ui:field="clearAllButton"。在我尝试设置操作的类 (ServerTas
我开始考虑将 GWT 与 UiBuilder 结合使用。我对如何使用 @UiHandler(..) 指令来制作简单的事件句柄代码感到有些困惑,正如 GWT documentation 中所写的那样。
我正在编写一个带有以下标记的小部件: 所以本质上是一个包含图像和标签的 div。现在,我不想在图像/跨度上添加事件处理程序,而是希望将 onClick 与 HTMLPanel
我正在使用 GWT UiBinder...但我无法使用 @UiHandler,因为它不起作用。 XML Java import com.google.gwt.core.clie
我正在这个主要 Activity 中实现一个与聊天消息相关的应用程序,每十秒调用一个方法和第二个方法刷新这个方法应用 ui 处理程序刷新目的同时运行我的 Intent 是一个方法调用一段时间并刷新应用
我基本上有一个菜单,您不能在其中单击标题,但是当您将鼠标悬停在菜单项上时,您可以从下拉元素中进行选择。每个元素都是 g:Anchor 标签,带有与之关联的 ui 字段。我期望发生的是,当用户单击下拉元
我正在使用 GWT CellTree 类,并且希望能够在选择更改时更新页面上的另一个 UI 元素。 我有这个: @UiField (provided = true) CellTree folderTr
我有一个扩展 GXT ComboBox 的类: public class RemoteCombo extends ComboBox { ... } 后来,我在一些代码中使用了它: @UiFie
通常,我们这样做: @UiHandler("aLink") void onClickALink(ClickEvent e) { // do something } 但是,如果我想使用自己的 H
根据 MVP 模式, View 应该包含所有 UI 组件。然后我读到了 GWT 2.0 中引入的新 UiHandler。 UiHandler 只能在 View 中使用。 我们应该在 mvp 模式中使用
此代码工作正常并更新我的“TextView”并显示“Toast”这就是我的头痛,因为我试图传递一个可运行的对象,而不包含我的 UiHandler,因为它应该是更新我的 UI 线程的桥梁,但我的 Act
我是一名优秀的程序员,十分优秀!