バックグラウンド ワーカー スレッドを使用する Android アプリに取り組んでいます。アクティビティからスレッドにメッセージを送信できるようにする必要がありますが、よくわかりません。
バックグラウンドで作業を行うための 1 つのアクティビティと 1 つのスレッドがあります。スレッドを開始し、必要に応じてメッセージ (引数、オブジェクトなど) を送信できるようにしたいと考えています。(アクティビティのハンドラーをスレッドに渡し、それを使用してメッセージを送信することにより) スレッドからアクティビティにメッセージを送信する方法をマスターしましたが、アクティビティからスレッドにメッセージを送信しようとすると、アプリがクラッシュします。
オンラインで見つけた 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();
}