是否可以将事件从线程发送到活动?

时间:2010-01-28 01:47:47

标签: java android

如果我想发送一个事件,例如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.
       }
   }

4 个答案:

答案 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()方法。