使用回调 post 执行到 UI 主线程的方法创建 Runnable class
Creating Runnable class with method that using callback post execution to UI main thread
我想知道这段代码是否正确。我怀疑 Runnable class 中的后台执行是在 运行() 方法中执行还是在构造函数中执行...似乎很明显它在 运行() 中,但我想确保我的想法...
class Tracer implements Runnable {
private Handler handler;
private OnTracerCompletedListener callback;
Tracer(OnTracerCompletedListener callback) {
this.callback = callback;
handler = new Handler(); // <--- is this on main UI thread?
}
@Override
public void run() {
// do something on background thread
// after task completed notify invoker of Tracer using callback
handler.post(new Runnable() {
@Override
public void run() {
if(callback != null) callback.onTracedCompleted();
}
}
}
}
构造函数和初始化程序中的代码与方法 run
中的代码之间的区别在于何时以及从哪个线程调用代码。
所以Tracer
的构造函数中的代码会在创建实例时立即被调用。在调用者的线程中它将是 运行。方法 run
将在后台运行 运行(我只是假设,因为我不知道您的应用程序的体系结构)。
所以应该在后台完成的所有事情都应该在方法中完成 run
。
我想知道这段代码是否正确。我怀疑 Runnable class 中的后台执行是在 运行() 方法中执行还是在构造函数中执行...似乎很明显它在 运行() 中,但我想确保我的想法...
class Tracer implements Runnable {
private Handler handler;
private OnTracerCompletedListener callback;
Tracer(OnTracerCompletedListener callback) {
this.callback = callback;
handler = new Handler(); // <--- is this on main UI thread?
}
@Override
public void run() {
// do something on background thread
// after task completed notify invoker of Tracer using callback
handler.post(new Runnable() {
@Override
public void run() {
if(callback != null) callback.onTracedCompleted();
}
}
}
}
构造函数和初始化程序中的代码与方法 run
中的代码之间的区别在于何时以及从哪个线程调用代码。
所以Tracer
的构造函数中的代码会在创建实例时立即被调用。在调用者的线程中它将是 运行。方法 run
将在后台运行 运行(我只是假设,因为我不知道您的应用程序的体系结构)。
所以应该在后台完成的所有事情都应该在方法中完成 run
。