java - 退出时的后退按钮会产生强制关闭错误

标签 java android exit ondestroy

我试图避免使用 onDestroy 并希望使其尽可能简单,但是当我退出程序时,我收到强制关闭错误。不知道为什么。这是应用程序主要部分的代码。有什么建议吗?

主要应用代码

   public class Quotes extends Activity implements OnClickListener {

   ProgressDialog dialog;
   private WebView webview;

   @Override
   public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);

          WebView adsview = (WebView) findViewById(R.id.ads);
          adsview.getSettings().setJavaScriptEnabled(true);
          adsview.loadUrl("http://www.dgdevelco.com/quotes/androidad.html");

          SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext());

          String q = SP.getString("appViewType","http://www.dgdevelco.com/quotes/quotesandroidtxt.html");
          String c = SP.getString("appRefreshRate","20");

          webview = (WebView) findViewById(R.id.scroll);
          webview.getSettings().setJavaScriptEnabled(true);
          webview.setWebViewClient(new QuotesWebView(this));
          webview.loadUrl(q);

          ScheduledExecutorService timer = Executors.newSingleThreadScheduledExecutor();
          timer.scheduleAtFixedRate(new Runnable() {

 @Override
 public void run() {
          webview.reload();
          }

 }, 10, Long.parseLong(c),TimeUnit.SECONDS);

 findViewById(R.id.refresh).setOnClickListener(this);


 }

 @Override
 public void onPause(){
          super.onPause();
 }

 @Override
 public void onResume(){
          super.onResume();
 }


 public void onClick(View v){
          switch(v.getId()){
          case R.id.refresh:
               webview.reload();
               break;
          }
 }


 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
          MenuInflater inflater = getMenuInflater();
          inflater.inflate(R.menu.menu, menu);

          MenuItem about = menu.getItem(0);
          about.setIntent(new Intent(this, About.class));

          MenuItem preferences = menu.getItem(1);
          preferences.setIntent(new Intent(this, Preferences.class));

          return true;

 }

 }   

LogCat

 07-04 13:34:55.011: INFO/DevicePushListener(1415): Connection State Changed: NetworkInfo: type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true
 07-04 13:34:55.011: WARN/WindowManager(1314): Attempted to add application window with unknown token HistoryRecord{40c40f50 com.dge.quotes/.Quotes}.  Aborting.
 07-04 13:34:55.034: DEBUG/AndroidRuntime(24137): Shutting down VM
 07-04 13:34:55.034: WARN/dalvikvm(24137): threadid=1: thread exiting with uncaught exception (group=0x40018560)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137): FATAL EXCEPTION: main
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@40517fb0 is not valid; is your activity running?
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at android.view.ViewRoot.setView(ViewRoot.java:527)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at android.app.Dialog.show(Dialog.java:241)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at android.app.ProgressDialog.show(ProgressDialog.java:107)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at android.app.ProgressDialog.show(ProgressDialog.java:90)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at com.dge.quotes.QuotesWebView.onPageStarted(QuotesWebView.java:22)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:271)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at android.os.Handler.dispatchMessage(Handler.java:99)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at android.os.Looper.loop(Looper.java:123)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at android.app.ActivityThread.main(ActivityThread.java:3806)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at java.lang.reflect.Method.invokeNative(Native Method)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at java.lang.reflect.Method.invoke(Method.java:507)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
 07-04 13:34:55.058: ERROR/AndroidRuntime(24137):     at dalvik.system.NativeStart.main(Native Method)
 07-04 13:34:55.089: WARN/ActivityManager(1314):   Force finishing activity com.dge.quotes/.Quotes

最佳答案

它写在你的堆栈跟踪中

Unable to add window -- token android.os.BinderProxy@40517fb0 is not valid; is your activity running

您启动一个执行重新加载的线程

然后按返回

您的 Activity 已完成

线程返回并尝试利用您的 Activity

哎呀已经完成了

关于java - 退出时的后退按钮会产生强制关闭错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6575678/

相关文章:

java - 如何对具有某状态条件的函数进行单元测试?

安卓 Espresso Intent

c++ - 调用 exit() 时会运行析构函数吗?

java - 使用 Rserve 时由于错误太大而丢弃缓冲区

java - 使用 Jersey 在 Rest Api 中传递两个对象

android - 如何将 Kotlin 与 Proguard 一起使用

c - 如何在shell脚本中使用ctrl+c?

C程序退出后崩溃

java - 我的程序可以编译,但当源文件中没有 0 时,它的平均值为 0.0

Android:如何通过adb清除应用程序缓存并保留用户数据?