1
スレッドを拡張し、run()メソッドをオーバーライドする新しいクラスを提供することによってスレッドを実装することは、私はそれを働かせるために終日試みました。私のコードは次のとおりです:スレッドを拡張し、run()メソッドをオーバーライドする新しいクラスを提供することによってスレッドを実装します。
/*
* see http://developer.android.com/reference/java/lang/Thread.html
*/
class threadClass extends Thread {
private Handler mHandler;
private Message mMsg;
// constructor
public threadClass(Handler handler, Message msg) {
// do something like save the Handler reference
mHandler = handler;
mMsg = msg;
}
@Override
public void run() {
// do some background processing, call the Handler?
mHandler.sendMessage(mMsg);
}
}
public Thread passHandlerToThread(Handler handler) {
handler.sendEmptyMessage(10);
Message msg = Message.obtain();
msg.what = 10;
Thread thread = new threadClass(handler, msg);
return thread;
}
private Handler localHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
int what = msg.what;
if (what == 10) Log.i("localHandler", "what: " + what);
}
};
public void startThread() {
Thread thread = passHandlerToThread(localHandler);
thread.start();
}
LocalService onCreate()でstartThread()を呼び出しますが、何も起こりません。私は間違って何をしていますか?私はlocalHandler()がpassHandlerToThread()とrun()の2度呼ばれることを期待していました。
を。しかし、ちょっと、3番目のアプローチがいいですね。だから私はあなたの答えを受け入れ、それを投票するでしょう。私の質問が好きかどうか尋ねることはできますか? – Marie
私はあなたの質問が好きです - そうです、私はそれを投票します。 :)。面白い、これは私のスレッドの大半を処理する方法です - 多分私は文書を見て行くでしょう... –
おっと、ドキュメントをチェックしました - 私はあなたが混乱していた理由を見ます - 私は@Overrideフラグを逃しました - 私は今それを追加しました。 –