【发布时间】:2014-06-10 08:20:07
【问题描述】:
今天我在执行 AsyncTask.exception 日志时遇到了 android 应用程序的问题 -
FATAL EXCEPTION: AsyncTask #1
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:838)
Caused by: java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.lang.Void[]
at com.android.demo.DashBoardActivity$3.doInBackground(DashBoardActivity.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
我不知道错误是什么以及为什么应用程序强制关闭。 这种情况在第一次运行后不会发生,而是从应用程序的第二次运行导致异常。
提前致谢。
已编辑-
我在 DashBoardActivity 中使用以下方法注册到 GCM-
public void registerToGCM(){
try{
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
registerReceiver(mHandleMessageReceiver, new IntentFilter(
AppConstents.DISPLAY_MESSAGE_ACTION));
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
GCMRegistrar.register(this, AppConstents.SENDER_ID);
} else {
if (GCMRegistrar.isRegisteredOnServer(this)) {
Toast.makeText(getApplicationContext(), "Already registered with GCM", Toast.LENGTH_LONG).show();
} else {
final Context context = this;
final AsyncTask mRegisterTask = new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
GCMServerUtilities.register(context,regId);
return null;
}
@Override
protected void onPostExecute(Void result) {
// mRegisterTask = null;
}
};
mRegisterTask.execute(null, null, null);
}
}
}
catch(Exception e){
e.printStackTrace();
}
}
【问题讨论】:
-
请提供异步任务所在的类代码
-
提供com.android.demo.DashBoardActivity$3.doInBackground(DashBoardActivity.java:1)指定的类
-
我已经添加了我的代码。
标签: android android-asynctask threadpoolexecutor