赞
踩
public interface AListener {
void onComplete(String a);
}
public class UseCB {
private AListener listener;
private String TAG = "JJWorld.DoMethodA";
public UseCB(AListener listener){
this.listener = listener;
}
public void callCB(){
Log.i(TAG,"somethingForCallBack 调用线程信息:" + Thread.currentThread().getId() + " " + Thread.currentThread().getName());
listener.onComplete("当前线程为" + Thread.currentThread().getId() + " " + Thread.currentThread().getName());
}
}
public class MainActivity extends AppCompatActivity {
private ThreadPoolExecutor threadPoolExecutor;
private static final String TAG = "JJWorld.MainActivity";
private UseCB thirdTest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(TAG,"调用线程信息:" + Thread.currentThread().getId() + " " + Thread.currentThread().getName());
UseCB useCB = new UseCB(new AListener() {
@Override
public void onComplete(String result) {
Log.i(TAG,"doMethodA 当前线程信息:" + Thread.currentThread().getId() + " " + Thread.currentThread().getName());
Log.e(TAG, "result: " + result);
}
});
useCB.callCB();
new Thread(new Runnable() {
@Override
public void run() {
Log.i(TAG,"secondTest 调用线程信息:" + Thread.currentThread().getId() + " " + Thread.currentThread().getName());
useCB.callCB();
}
},"Second Thread").start();
}
}
回调函数内部程序执行时所在线程为调用的线程,即调用listener.onComplete的线程。
2023-05-19 10:55:28.719 3274-3274/cn.jj.callback I/JJWorld.MainActivity: 调用线程信息:2 main
2023-05-19 10:55:28.719 3274-3274/cn.jj.callback I/JJWorld.DoMethodA: somethingForCallBack 调用线程信息:2 main
2023-05-19 10:55:28.719 3274-3274/cn.jj.callback I/JJWorld.MainActivity: doMethodA 当前线程信息:2 main
2023-05-19 10:55:28.719 3274-3274/cn.jj.callback E/JJWorld.MainActivity: result: 当前线程为2 main
2023-05-19 10:55:28.719 3274-3715/cn.jj.callback I/JJWorld.MainActivity: secondTest 调用线程信息:34278 Second Thread
2023-05-19 10:55:28.719 3274-3715/cn.jj.callback I/JJWorld.DoMethodA: somethingForCallBack 调用线程信息:34278 Second Thread
2023-05-19 10:55:28.719 3274-3715/cn.jj.callback I/JJWorld.MainActivity: doMethodA 当前线程信息:34278 Second Thread
2023-05-19 10:55:28.719 3274-3715/cn.jj.callback E/JJWorld.MainActivity: result: 当前线程为34278 Second Thread
介绍了回调函数的执行线程问题。回调函数在回调函数执行的线程里执行回调具体函数。
https://blog.csdn.net/itcodexy/article/details/111027346
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。