私はAndroidサービス内にいくつかのコードを持っています。これは3秒ごとにいくつかのAsyntasksを実行するタイマーです。しかし時々私はこのエラーを受け取ります:
03-21 08:56:48.928: E/AndroidRuntime(26870): FATAL EXCEPTION: AsyncTask #3
03-21 08:56:48.928: E/AndroidRuntime(26870): java.lang.RuntimeException: An error occured while executing doInBackground()
03-21 08:56:48.928: E/AndroidRuntime(26870): at android.os.AsyncTask$3.done(AsyncTask.java:299)
03-21 08:56:48.928: E/AndroidRuntime(26870): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
03-21 08:56:48.928: E/AndroidRuntime(26870): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
03-21 08:56:48.928: E/AndroidRuntime(26870): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
03-21 08:56:48.928: E/AndroidRuntime(26870): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
03-21 08:56:48.928: E/AndroidRuntime(26870): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
03-21 08:56:48.928: E/AndroidRuntime(26870): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
03-21 08:56:48.928: E/AndroidRuntime(26870): at java.lang.Thread.run(Thread.java:856)
03-21 08:56:48.928: E/AndroidRuntime(26870): Caused by: java.lang.NullPointerException
03-21 08:56:48.928: E/AndroidRuntime(26870): at Dic.proj.pkg.notifService$check_last_asyn.doInBackground(notifService.java:251)
03-21 08:56:48.928: E/AndroidRuntime(26870): at Dic.proj.pkg.notifService$check_last_asyn.doInBackground(notifService.java:1)
03-21 08:56:48.928: E/AndroidRuntime(26870): at android.os.AsyncTask$2.call(AsyncTask.java:287)
03-21 08:56:48.928: E/AndroidRuntime(26870): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
03-21 08:56:48.928: E/AndroidRuntime(26870): ... 4 more
どうしてか分かりません。しかし、私は推測があります。私のサービスは、次のコードによってメインアクティビティから開始されます。
Intent service = new Intent(DictionaryActivity.this, notifService.class);
DictionaryActivity.this.startService(service);
初めてメインアクティビティを開いてサービスを開始したと思います。次に、メインアクティビティに移動すると、サービスが再開され、Asyntasksが並行して実行され、このエラーが発生します...
サービスがすでに開始されているかどうかを確認してから、サービスを再開しない方法はありますか?どうすれば問題を解決できますか?