我已经在网上搜索了很久了。也许我在这里做的是错的。
我已经在一个与MainActivity.java分开的文件中编写了一个线程类。因为线程和主活动都比较长,所以我决定将它们分成不同的文件。
我希望将线程类生成的一些值传递给主活动。最初,我想使用处理程序。但是,因为线程位于与主活动不同的类中。它不知道我在主活动中定义的处理程序。
public class mythread implements Runnable{
@Override
public void run(){
result = result_from_some_task();
}
}这是我的线程类的基本结构,我希望将结果传递回主活动。我看过许多例子,其中大多数是线程在主活动类中,定义的处理程序可以很容易地引用。
意图似乎不适用。有没有人知道如何进行这类操作?
提前谢谢。
发布于 2014-05-16 04:59:29
创建AnotherClass的参数化构造函数,当您创建AnotherClass对象时,只需将MainActivity对象传递到构造函数中,并在AnotherClass类中调用MainActivity的方法,然后从该对象调用该方法。
检查以下代码:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AnotherClass object= new AnotherClass (this);
object.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
}
}检查另一堂课:
public class AnotherClass extends Thread {
MainActivity mainActivity;
public AnotherClass (MainActivity mainActivity) {
// TODO Auto-generated constructor stub
this.mainActivity = mainActivity;
}
public void run() {
//write other logic
mainActivity.makeSomeCalculation();
//write other logic
}
}发布于 2014-05-16 04:57:30
在你的活动中你需要一个处理程序。当您的线程完成时,您将向处理程序发送一条消息,通知该线程执行完成。例如,请参见这里。您也可以为此使用接口。例如,请参见这里。在回答中,他使用接口来通知异步任务。您也可以对线程执行同样的操作。
发布于 2014-05-16 05:01:47
这可能不是您想要的,因此请将其视为避免长期headaches.Try EventBus的建议。这是一个库,可以方便地在Android中的各个组件之间进行通信。
https://stackoverflow.com/questions/23692856
复制相似问题