有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

如果我想从线程向活动发送事件(例如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) 个答案

  1. # 1 楼答案

    如果我理解正确,您希望从内部ThreadA类调用HelloAndroid的方法OnSomeEvent(),对吗

    如果是这种情况,您可以纠正:

    private class ThreadA extends Thread {
        public void run() {
            HelloAndroid.this.OnSomeEvent();
        }
    }
    

    或者更简单,直接调用OnSomeEvent()方法

  2. # 3 楼答案

    您必须使用处理程序来更新UI

  3. # 4 楼答案

    您始终可以从线程向活动发送消息,如下所示:

    //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);
        }
    }
    

    您还可以创建包含一些值的消息