【问题标题】:How to start an activity from child android thread?如何从子 android 线程启动活动?
【发布时间】:2014-05-15 09:28:15
【问题描述】:

我有两个文件 MainActivity.java 和 GestureListener.java 在 MainActivity 的 onActivityCreate() 中,正在启动一个线程 GestureListener.start()。 GestureListener 有一个等待手势事件的线程。当事件发生时,我想转移到 MainActivity.java 中的一个函数。

可以这样做吗?

【问题讨论】:

  • 需要查看您的代码
  • 使用处理程序并向其发送消息然后实现 Handler.CallBack

标签: android multithreading android-intent android-activity


【解决方案1】:

创建 GestureListener 的参数化构造函数,当你创建 GestureListener 的对象时,只需将 MainActivity 的对象传递给该构造函数,然后在要调用 MainActivity 方法的 GestureListener 类中简单地从该对象调用该方法。

检查以下代码:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    GestureListener listener = new GestureListener(this);
    listener.start();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public void makeSomeCalculation() {
    //logic to change some UI 
}
}

并检查 GestureListener 类:

public class GestureListener extends Thread {

MainActivity mainActivity;

public GestureListener(MainActivity mainActivity) {
    // TODO Auto-generated constructor stub

    this.mainActivity = mainActivity;
}

public void run() {
   //write other logic
        mainActivity.makeSomeCalculation();
   //write other logic
 }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 2023-03-17
    • 2018-04-05
    • 1970-01-01
    相关资源
    最近更新 更多