如何从子android线程启动一个活动?

时间:2014-05-15 09:28:16

标签: android multithreading android-intent android-activity

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

是否可以这样做?

1 个答案:

答案 0 :(得分:0)

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

检查以下代码:

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
 }
}