为了在我的应用程序中执行一些 IO 操作,我编写了一个线程,它的 run 方法上没有任何内容,但它有几个其他方法,如 void write(String filename, String data) 和 void create(String filename),所有这些都有效像一个魅力。我的问题是,我曾经认为这个线程在后台运行或类似的东西,但是因为在我的主要活动中删除 .run() 语句后调用所述方法仍然有效,我怎样才能让一个线程运行并等待一个来自活动的消息而不阻止应用程序?第二个问题,由于这些方法仍在工作,这是否意味着当我从主要活动中调用它们时它们正在主 UI 线程上执行?
问问题
2451 次
3 回答
3
于 2012-09-06T06:55:50.090 回答
2
对于在所述线程上运行的方法,您必须从该线程而不是从任何其他线程调用您的方法。
class WorkerThread extends Thread {
public Handler mHandler;
public void run() {
Looper.prepare();
mHandler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
}
};
Looper.loop();
}
}
然后使用WorkerThread.mHandler.postRunnable
orsendMesssage
用于在另一个线程上完成的工作。
于 2012-09-06T06:56:58.303 回答