我正在做一些Android开发,我有一个对象,它执行特定的任务。当该任务完成后,我需要通知我的主要方法(主要活动),该方法一直在运行,该过程已经完成并传递了一些有关它的信息。
这可能听起来有点不清楚,所以我给你举个例子:
请查看Android中的setOnClickListener()
方法:
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
//This method is called on click
@Override
public void onClick(View v) {
//The View is passed in an anonymous inner class
}
});
等待单击按钮并调用onClick(View v)
方法。我正在寻求实现相同的代码结构。
如何做到这一点?
答案 0 :(得分:1)
这正是您在android中使用视图的侦听器模式。你想要做的是在你的类中声明一个正在完成工作的接口,并传递一个这个接口的实例。原始示例:
TaskDoer.java :
public class TaskDoer {
public interface OnTaskDoneListener {
void onDone(Data data);
}
public void doTask(OnTaskDoneListener listener) {
// do task...
listener.onDone(data);
}
}
活动:
public void doTaskAndGetResult() {
new TaskDoer().doTask(new TaskDoer.OnTaskDoneListener() {
public void onDone(Data data) {
// do something
}
}
}
答案 1 :(得分:1)
你提到了“过程”。如果您真的在不同的过程中做某事,那么您需要查看interprocess communications(IPC)。否则,您可以使用界面:
创建一个名为MyListener
的类:
public interface MyListener {
void onComplete();
}
在您的班级中通知您的活动:
MyListener myListener;
public void setMyListener(MyListener myListener){
this.myListener = myListener;
}
然后,当您准备好通知主要活动时,请拨打以下一行:
myListener.onComplete();
最后,在MainActivity
工具MyListener
:
public class MyListener extends Activity implements MyListener {
///other stuff
@Override
public void onComplete(){
// here you are notified when onComplete it called
}
}
希望这会有所帮助。欢呼声。