0

バックグラウンドASycTaskを数分ごとに実行したい。タイマーを作成し、バックグラウンド タスクの .execute コマンドを実行します。isCheckingまた、BackgroundNotify の実行中に true になる bool も作成しました。問題は、まだ次のエラーが発生することです。

01-26 15:09:32.871: E/AndroidRuntime(22332): FATAL EXCEPTION: Timer-0
01-26 15:09:32.871: E/AndroidRuntime(22332): java.lang.IllegalStateException: Cannot execute task: the task has already been executed (a task can be executed only once)
01-26 15:09:32.871: E/AndroidRuntime(22332):    at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:578)
01-26 15:09:32.871: E/AndroidRuntime(22332):    at android.os.AsyncTask.execute(AsyncTask.java:534)
01-26 15:09:32.871: E/AndroidRuntime(22332):    at de.tecfriends.vbtsplash2013.MainActivity$2.run(MainActivity.java:61)
01-26 15:09:32.871: E/AndroidRuntime(22332):    at java.util.Timer$TimerImpl.run(Timer.java:284)

私は何を間違っていますか?

4

2 に答える 2

6

AsyncTask は 1 回しか実行できません。タスクを再度実行する必要がある場合は、新しいインスタンスを作成し、それを呼び出しますexecute()

if (task.getStatus() == AsyncTask.Status.FINISHED) {
    task = new AsyncTask();
}

if (task.getStatus() != AsyncTask.Status.RUNNING) {
    task.execute();
}
于 2013-01-26T14:23:20.030 に答える
1

ログのように:

llegalStateException:タスクを実行できません:タスクはすでに実行されています(タスクは1回だけ実行できます)

すでに実行されているASycTaskを開始しようとしていることを意味します。AsyncTask.Statusを使用して開始する前に、ASycTaskが実行されているかどうかを確認する必要があります。

if(your_AsyncTask.getStatus() == AsyncTask.Status.RUNNING){
    // My AsyncTask is running  
}
if(your_AsyncTask.getStatus() == AsyncTask.Status.FINISHED){
    // My AsyncTask is FINISHED . start here again 
}
于 2013-01-26T14:25:40.887 に答える