我在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并行运行,这会导致此错误......
有没有办法检查服务是否已经启动,然后不再启动它?我怎么能解决我的问题?