2015-09-17 72 views
-3

我有一个应用程序的机器人。所有的代码都可以,没有错误,但我不知道我的应用程序有时会有一个关闭的力量。你能帮我解决这个问题吗?应用程序android force关闭

,这里是我的logcat:

09-17 02:35:36.352: E/AndroidRuntime(2031): FATAL EXCEPTION: main 
09-17 02:35:36.352: E/AndroidRuntime(2031): Process: com.sendquiz.guessanimalsquiz, PID: 2031 
09-17 02:35:36.352: E/AndroidRuntime(2031): android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running? 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.view.ViewRootImpl.setView(ViewRootImpl.java:532) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:259) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.app.Dialog.show(Dialog.java:286) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at com.sendquiz.javafile.TimeCompleteDialog.showDialog(TimeCompleteDialog.java:47) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at com.sendquiz.guessanimalsquiz.QuizActivity.onTimeFinish(QuizActivity.java:240) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at com.sendquiz.guessanimalsquiz.QuizActivity$1.run(QuizActivity.java:49) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.os.Handler.handleCallback(Handler.java:733) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.os.Handler.dispatchMessage(Handler.java:95) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.os.Looper.loop(Looper.java:136) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at android.app.ActivityThread.main(ActivityThread.java:5001) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at java.lang.reflect.Method.invoke(Method.java:515) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
09-17 02:35:36.352: E/AndroidRuntime(2031):  at dalvik.system.NativeStart.main(Native Method) 

这里是我的代码:

public void gameCompleted(){ 
     GameCompleteDialog dialog=new GameCompleteDialog(QuizActivity.this,SCORE_COUNTER); 
     dialog.buildDialog(); 
     dialog.showDialog();    
     handler.removeCallbacks(timerThread); 

    } 
    public void onTimeFinish() { 
     stopTimer(); 
     TimeCompleteDialog dialog=new TimeCompleteDialog(this); 

     dialog.showDialog(); 

     AnswerHandler.vibrate(this); 

    } 
} 
+0

对话框似乎是一个问题 –

+0

可能重复的[错误:BinderProxy @ 45d459c0无效;是你的活动运行?](http://stackoverflow.com/questions/7811993/error-binderproxy45d459c0-is-not-valid-is-your-activity-running) – user2413972

回答

1

看来,在这个answer的决定。

if(!((Activity) context).isFinishing()) 
{ 
    //show dialog 
} 

所有其他的答案那里似乎在做奇怪的事情想通过跑步活动的列表进行迭代,但这是简单得多,似乎这样的伎俩。

+0

如何将此代码添加到我的脚本?对不起,我是新手在java –

+0

我还没有看到你的代码。 – user2413972

+0

我已更新我的问题先生 –

0

请尝试下面的代码。根据您的需要修改它

我遇到完全相同的问题。调用'(!isFinishing())'防止了崩溃,但它不能显示'alert'消息。

然后我试着调用函数'static',在那里显示alert。之后,没有发生崩溃,消息也显示出来。

public static void connect_failure() {  
     Log.i(FW_UPD_APP, "Connect failed"); 

     new AlertDialog.Builder(MyActivity) 
     .setTitle("Title") 
     .setMessage("Message") 
     .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
        //do nothing 
      } 
     }) 
     .setIcon(R.drawable.the_image).show();  
    }