Is it possible to send an event from a thread to an activity?
If I want to send an event, e.g. OnClick, to an activity from a thread? Thanks.
The expected work flow is be开发者_如何学编程low:
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.
}
}
You can always send a message from a thread to the activity, like that:
//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);
}
}
You can also create message, which will contain some values.
You will have to use Handlers to update UI.
All UI related event have to executed from UI Thread. http://developer.android.com/guide/appendix/faq/commontasks.html#threading
If I understand correctly, you want to call the method OnSomeEvent()
of HelloAndroid
from your inner ThreadA
class, right?
If this is the case you could right:
private class ThreadA extends Thread {
public void run() {
HelloAndroid.this.OnSomeEvent();
}
}
or even simpler, just call OnSomeEvent()
method directly.
精彩评论