Android 回调到ResultReceiver时退出应用程序后出现未捕获异常

Android 回调到ResultReceiver时退出应用程序后出现未捕获异常,android,android-intent,android-activity,android-dialog,Android,Android Intent,Android Activity,Android Dialog,我的应用程序的初始活动在其onStart()方法中将意向发送给IntentService。它将ResultReceiver(匿名内部类)放置在用于调用服务的意图中。然后,服务使用ResultReceiver将数据库传递给调用者 这似乎很好,除了当我启动应用程序时,当服务呼叫仍在运行时,快速点击“后退”按钮返回主屏幕。服务操作完成后,它会向ResultReceiver发送一个结果,ResultReceiveResult()方法会创建一个进度对话框(使用MyActivity.this作为上下文)并继

我的应用程序的初始活动在其onStart()方法中将意向发送给IntentService。它将ResultReceiver(匿名内部类)放置在用于调用服务的意图中。然后,服务使用ResultReceiver将数据库传递给调用者

这似乎很好,除了当我启动应用程序时,当服务呼叫仍在运行时,快速点击“后退”按钮返回主屏幕。服务操作完成后,它会向ResultReceiver发送一个结果,ResultReceiveResult()方法会创建一个进度对话框(使用MyActivity.this作为上下文)并继续执行其他操作

由于活动已完成,因此尝试创建进度对话框会生成异常:

06-23 23:29:14.114: E/AndroidRuntime(29570): FATAL EXCEPTION: main
06-23 23:29:14.114: E/AndroidRuntime(29570): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@4051bf80 is not valid; is your activity running?
06-23 23:29:14.114: E/AndroidRuntime(29570):    at android.view.ViewRoot.setView(ViewRoot.java:557)
06-23 23:29:14.114: E/AndroidRuntime(29570):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
06-23 23:29:14.114: E/AndroidRuntime(29570):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
06-23 23:29:14.114: E/AndroidRuntime(29570):    at android.view.Window$LocalWindowManager.addView(Window.java:433)
06-23 23:29:14.114: E/AndroidRuntime(29570):    at android.app.Dialog.show(Dialog.java:265)
06-23 23:29:14.114: E/AndroidRuntime(29570):    at android.app.ProgressDialog.show(ProgressDialog.java:107)
06-23 23:29:14.114: E/AndroidRuntime(29570):    at android.app.ProgressDialog.show(ProgressDialog.java:90)
06-23 23:29:14.114: E/AndroidRuntime(29570):    at android.app.ProgressDialog.show(ProgressDialog.java:85)
06-23 23:29:14.114: E/AndroidRuntime(29570):    at com.myapp.SplashScreen.someMethod(SplashScreen.java:137)
那么:为了避免上述情况,什么是正确的方法来做这类事情呢

在显示对话框之前,必须检查每个回调中的活动是否仍在运行,这似乎是令人难以置信的负担。光是这一点就让我怀疑我走错了方向

编辑以添加:


实际上,这似乎只发生在我启动我的应用程序,快速关闭它(通过返回按钮到主屏幕),然后快速再次启动它时。如果我只是启动它并点击“上一步”按钮,然后坐在那里几秒钟,我就不会出现异常。

您在Activity onCreate()中使用setContext?在代码中的任意位置,调用然后已经完成的Activity以显示dilogbox。发布获得结果的代码并尝试创建对话框