开发者

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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜