也许我对这个话题的了解太少了,“回调”这个词不在这里,抱歉。
如果我在任何类/Activity/其他线程中启动一个线程,并且在完成后我希望它从启动该线程的实例(类/Activity/其他线程)中执行一些其他代码,我该如何实现?
目前,我是这样做的:
这是伪代码。
// Method inside class/activity/other thread
private void startThread(){
MyThread thread = new MyThread(this);
thread.start();
}
在线程内部
public class MyThread extends Thread{
private (class/activity/other thread) instanceAbove;
public MyThread ( (class/activity/other thread) instanceAbove){
this.instanceAbove = instanceAbove;
}
public void run(){
//Do some stuff
finish();
}
public void finish(){
instanceAbove.MyThreadFinishMethod();
}
}
我认为这不是一个好方法,但是你能举个例子吗?
使用接口(interface)适用于 AlertDialog
,因为我可以使用 onAppend()
。但是,在这种情况下,我不知道如何使用它们。
最佳答案
您可以轻松地使用接口(interface)
并相应地处理来自调用 Activity/类/其他线程的回调。这是一个例子。
首先定义一个如下所示的接口(interface)。
public interface ThreadFinishListener {
void onFinish();
}
让我们假设您正在从 Activity
中实例化一个 Thread
。因此,在您的 Activity
中实现监听器,如下所示。
public class MainActivity extends AppCompatActivity implements ThreadFinishListener {
// .... Other functions in your activity
@Override
void onFinish() {
// Do something when the Thread is finished and returned back to the activity
// This is actually your callback function.
}
}
现在修改Thread
类的构造函数,以便将监听器传递给它。
public class MyThread extends Thread {
private ThreadFinishListener listener;
public MyThread(ThreadFinishListener listener){
this.listener = listener;
}
public void run(){
//Do some stuff
finish();
}
public void finish() {
// This will invoke the function call in your activity
listener.onFinish();
}
}
现在在初始化您的 Thread
时,您可能希望按如下方式将监听器传递给它。
MyThread thread = new MyThread(this);
thread.run();
我希望这就足够了。
关于java - 如何在android中实现回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57620618/