我正在开发一款使用后台工作线程的Android应用。我需要能够从活动中向线程发送消息,但我无法弄明白。
我有一个活动,一个线程在后台工作。我想启动线程并能够在需要时向它发送消息(参数,对象等)。我已经掌握了从线程向活动发送消息(通过将活动的处理程序传递给线程,并使用它来发送消息),但每当我尝试将消息从活动发送到线程时,应用程序崩溃。
我已经尝试过在网上找到的10-12道教程,这些教程似乎都有不同的做法,但我还是没有让它正常工作。有人可以指出我正确的方向吗?
一个简单的活动示例:
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savesInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private void doWork() {
Worker worker = new Worker();
worker.start();
worker.handler.sendEmptyMessage(0);
}
}
示例简单线程:
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
public class Worker extends Thread {
public Handler handler;
public void run() {
Looper.prepare();
handler = new Handler() {
public void handleMessage(Message msg) {
Log.d("Worker.run()", "Got message saying " + msg.what);
}
};
Looper.loop();
}
答案 0 :(得分:1)
你必须首先阅读如何使用和for Looper并且不要忘记在最后停止looper Goodluck
public class Worker extends Thread {
public Handler handler;
@Override
public run() {
Looper.prepare();
//initialization will take a little time you if you want to send message check if handler != null
handler = new Handler() {
public void handleMessage(Message msg) {
Log.d("Worker.run()", "Got message saying " + msg.what);
}
};
Looper.loop();
}
public void sendMessage(Message m)
{
while(handler == null);
handler.sendMessages(m);
}