アプリでいくつかの IO 操作を実行するために、スレッドを作成しました。run メソッドには何もありませんが、void write(String filename, String data) や void create(String filename) などの他のメソッドがいくつかあり、すべて機能します。魔法のように。私の質問は、このスレッドがバックグラウンドまたはこのようなもので実行されていると思っていましたが、メインアクティビティの .run() ステートメントを削除した後も、上記のメソッドを呼び出すことは引き続き機能するため、スレッドを実行して待機させるにはどうすればよいですか?アプリをブロックせずにアクティビティからのメッセージ? そして 2 番目の質問は、メソッドがまだ機能しているため、メイン アクティビティから呼び出したときにメイン UI スレッドで実行されているということですか?
2451 次
3 に答える
3
start()
の代わりに メソッドを使用する必要がありrun()
ます。
呼び出し元のスレッドでrun()
指定されたを実行しています。Runnable
これstart()
を処理する新しいスレッドを開始していますRunnable
于 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 に答える