0

こんにちは、アンドロイドでサービスを作成しています。サービスでは、コードを 5 分ごとに定期的に実行したいと考えています。私は同じためにスレッドを使用しています。

以下は私のコードです

@Override
public void onCreate() {
    super.onCreate();
    Toast.makeText(this, "Service created ...", Toast.LENGTH_LONG).show();

    Thread thr = new Thread() {
    public void run() {
        try {
            sleep(20000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally{}
        }
   };
    while (true) {

        // Some code1

        thr.start();
        while(thr.isAlive()){}

        //some code 2
    }

}

次のエラーが表示されます

09-24 21:34:40.869: E/AndroidRuntime(12393): 致命的な例外: メイン 09-24 21:34:40.869: E/AndroidRuntime(12393): java.lang.RuntimeException: サービス com.example を作成できません。 find.your.friend.iith.updateService: java.lang.IllegalThreadStateException: スレッドは既に開始されています。

どこが間違っているのか教えてください。

4

2 に答える 2

0

警報サービスを利用してみませんか?それはあなたの問題に対する最良の解決策です。

于 2012-09-24T17:22:02.710 に答える
0

すでに有効なスレッドを開始することはできません。Aswhile(true)は永久に実行thr.start()され、何度も呼び出されます。試す:

while (true) {

    // Some code1

    if(!thr.isAlive()) {
        thr.start();
    }
    while(thr.isAlive()){}

    //some code 2
}
于 2012-09-24T16:16:02.713 に答える