java.lang.IllegalArgumentException: View not at...

今天在给软件跑monkey的时候,出现这样一个问题:

// CRASH: 软件包名(pid 5931)
// Short Msg: java.lang.IllegalArgumentException
// Long Msg: java.lang.IllegalArgumentException: View not attached to window manager
// Build Label: samsung/kyleizn/kyleichn:4.0.4/IMM76I/S7562iZNAMB1:user/release-keys
// Build Changelist: S7562iZNAMB1
// Build Time: 1361782029000
// java.lang.IllegalArgumentException: View not attached to window manager
// at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:587)
// at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:324)
// at android.view.WindowManagerImpl$CompatModeWrapper.removeView(WindowManagerImpl.java:151)
// at android.app.Dialog.dismissDialog(Dialog.java:321)
// at android.app.Dialog$1.run(Dialog.java:119)
// at android.app.Dialog.dismiss(Dialog.java:306)
// at 软件包名.common.communication.RequestTask$2.onPostExecute(RequestTask.java:158)
// at android.os.AsyncTask.finish(AsyncTask.java:602)
// at android.os.AsyncTask.access$600(AsyncTask.java:156)
// at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
// at android.os.Handler.dispatchMessage(Handler.java:99)
// at android.os.Looper.loop(Looper.java:137)
// at android.app.ActivityThread.main(ActivityThread.java:4517)
// at java.lang.reflect.Method.invokeNative(Native Method)
// at java.lang.reflect.Method.invoke(Method.java:511)
// at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
// at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
// at dalvik.system.NativeStart.main(Native Method)
// 
** Monkey aborted due to error.
Events injected: 187049
:Dropped: keys=37 pointers=256 trackballs=0 flips=0
## Network stats: elapsed time=17319022ms (0ms mobile, 649917ms wifi, 16669105ms not connected)
** System appears to have crashed at event 187049 of 1200000000 using seed 1000

从上述的log日志可以看出,是在RequestTask这个方法中出的问题,且在158行,跟踪软件代码如下:

。。。。

protected void onPostExecute(T result) {
if(!cancel)
{
try {
if (myException==null) {
onFinishTask(result);
}else{
onException(myException);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(pd != null && pd.isShowing()){
pd.dismiss();
}
}

}
};

。。。。。


产生崩溃的原因是在关闭对话框的时候,对话框所依附的activity已经关闭,为了解决这个问题,我是做如下处理的:

protected void onPostExecute(T result) {
if(!cancel)
{
try {
if (myException==null) {
onFinishTask(result);
}else{
onException(myException);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
if(pd != null && pd.isShowing()){
if(!activity.isFinishing()&&!isFinishActivity){
pd.dismiss();
}
}
}

}
};
即在关闭对话框时加了判断条件:if(!activity.isFinishing()&&!isFinishActivity)如果调用该任务的activiy没有关掉,那么关闭对话框,这样问题就解决了。

你可能感兴趣的:(TO,android,manager,window,view,not,attached)