如果我想发送一个事件,例如OnClick,来自线程的活动?感谢。
预期的工作流程如下:
public class HelloAndroid extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Crate threadA
Start threadA
}
public void OnSomeEvent() {
do something that changes the views in this activity;
}
private class ThreadA extends Thread {
public void run() {
do something ...
Send Some Event to Activity HelloAndroid.
}
}
答案 0 :(得分:5)
您始终可以从线程向活动发送消息,如:
//this should be in your Activity class
private Handler SomeHandler = new Handler() {
public void handleMessage(Message msg) {
ReactOnMessage();
}
};
private class SomeThread implements Runnable {
public void run() {
doSomething();
SomeHandler.sendEmptyMessage(0);
}
}
您还可以创建包含一些值的消息。
答案 1 :(得分:2)
您必须使用处理程序来更新UI。
答案 2 :(得分:1)
所有与UI相关的事件都必须从UI Thread执行。 http://developer.android.com/guide/appendix/faq/commontasks.html#threading
答案 3 :(得分:0)
如果我理解正确,您想从内部OnSomeEvent()
课程中调用HelloAndroid
的方法ThreadA
,对吗?
如果是这种情况你可以:
private class ThreadA extends Thread {
public void run() {
HelloAndroid.this.OnSomeEvent();
}
}
甚至更简单,只需直接调用OnSomeEvent()
方法。