问题标签 [ondestroy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2861 浏览

android - 我的 android 服务 onDestroy 方法没有被调用。会不会是因为内存低?

我有一个充满活力的银河。不久前我在上面安装了 ICS rom。我注意到我以前在 2.2 上使用的视频捕获程序现在在我捕获视频时突然退出而没有通知。然后我继续了解到 ICS 使用大量内存。

我现在正在开发一个通过服务意图创建对象数组的应用程序。该服务是一种粘性服务。因此,据我了解,它会尽可能长时间地存在。在我的 onDestroy 方法中,我将我的对象数组序列化为一个文件,以便当我的服务再次启动时,加载该数组(如果文件存在)。所以我测试了我的应用程序,一切运行良好,然后我退出了活动(意图仍应在后台运行)。然后我运行 ICS 互联网浏览器并从我的应用程序中获得强制关闭。

我的系统是否有可能杀死我的服务并且永远不会调用 ondestroy?

0 投票
13 回答
248031 浏览

android - Activity.finish() 方法到底在做什么?

我正在开发android应用程序一段时间,并关注了很多关于活动生命周期和应用程序生命周期的帖子。

我知道Activity.finish()在某处调用方法Activity.onDestroy(),并且还从堆栈中删除了活动,我猜它以某种方式指向操作系统和垃圾收集器,他可以“做他的伎俩”并在找到合适的时候释放内存所以....

我来到这个帖子 - 退出应用程序是否令人不悦?并阅读马克墨菲的答案。

这让我对这个方法到底做了什么感到有点困惑finish()

有没有机会我会打电话finish()onDestroy()不会被打电话?

0 投票
2 回答
1898 浏览

android - onDestroy 中 AsyncTask.execute 的含义

我在我的onDestroy函数中运行了这段代码:

AsyncTask我向服务器发送请求(仅返回 200 响应)。

我的问题是,这样做有什么影响(如果有的话)?

Activity 会被销毁吗?如果服务器没有响应,应用程序是否保持唤醒状态并可能进入 ANR?有什么想法吗?

编辑

我尝试这样做,但得到了一个android.os.NetworkOnMainThreadException.

更新#2

使用 aThread而不是 aRunnable成功了!

0 投票
2 回答
335 浏览

android - Data on a Extended Application class lost when app is closed

I´ve an Android Application that holds some static objects on an class that extends Application class, using the same approach as exemplified here.

The objects that is hold by this class is shared and manipulated between all activities on my app.

Everything works well, but, some time ago, I noticed that when the application runs on backgroud for some time, when it´s restored, the data that was stored on the extended class has gone, and the app starts to throws a lot of NullReference exceptions.

I think that this happens because of the application was being temporary destroyed by the OS, to be recreated when we need to use it again.

So, how could I handle this scenario? Is there any way to discover that the application is being temporary destroyed, without subscribing to the onDestroy event of an Activity? On a test that I did, the onDestroy event was not called when I asked the background process of my app to being stopped.

Thanks a lot!

0 投票
2 回答
2148 浏览

android - Android 动态壁纸不显示

我刚开始学习动态壁纸,我做了这个小东西。

问题是我的应用程序编译没有任何问题。

当我在手机中打开它时,它会在预览中显示壁纸,但是当我单击“设置为壁纸”时,它会以某种方式崩溃,并返回前屏幕,我的壁纸变黑,但它不运行它。

我的猜测是问题出在 onDestory() 的某个地方。

07-06 17:14:43.869:E/Surface(478):出队缓冲区出错(未知错误:-19) 07-06 17:14:43.869:E/Surface(478):dequeueBuffer 失败(没有这样的设备) 07-06 17:14:43.869: E/BaseSurfaceHolder(478): 异常锁定表面 07-06 17:14:43.869: E/BaseSurfaceHolder(478): java.lang.IllegalArgumentException 07-06 17:14:43.869: E /BaseSurfaceHolder(478): 在 android.view.Surface.lockCanvasNative(Native Method) 07-06 17:14:43.869: E/BaseSurfaceHolder(478): 在 android.view.Surface.lockCanvas(Surface.java:288) 07 -06 17:14:43.869: E/BaseSurfaceHolder(478): 在 com.android.internal.view.BaseSurfaceHolder.internalLockCanvas(BaseSurfaceHolder.java:132) 07-06 17:14:43.869: E/BaseSurfaceHolder(478):在 com.android.internal.view.BaseSurfaceHolder.lockCanvas(BaseSurfaceHolder.java:112) 07-06 17:14:43.869: E/BaseSurfaceHolder(478):在 com.mendel.strips.Strips$StripsEngine.run(Strips.java:81) 07-06 17:14:43.869: E/BaseSurfaceHolder(478): 在 java.lang.Thread.run(Thread.java:1096) 07-06 17:14:43.972: W/dalvikvm(478): threadid=15: 线程以未捕获的异常退出 (group=0x4001b188) 07-06 17:14:43.979: E/AndroidRuntime(478): 未捕获的处理程序:线程线程 8 由于未捕获的异常而退出 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): at com.mendel。 strips.Strips$StripsEngine.run(Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): at java.lang.Thread.run(Thread.java:1096) 07-06 17: 14:43.999: I/dalvikvm(478): threadid=7: 对信号 3 做出反应 07-06 17:14:43.999: E/dalvikvm(478): 无法打开堆栈跟踪文件'/data/anr/traces.txt ': 没有权限Strips$StripsEngine.run(Strips.java:81) 07-06 17:14:43.869: E/BaseSurfaceHolder(478): 在 java.lang.Thread.run(Thread.java:1096) 07-06 17:14: 43.972: W/dalvikvm(478): threadid=15: 线程退出未捕获异常 (group=0x4001b188) 07-06 17:14:43.979: E/AndroidRuntime(478): 未捕获处理程序:线程 Thread-8 由于未捕获而退出异常 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): at com.mendel.strips.Strips$StripsEngine.run (Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): 在 java.lang.Thread.run(Thread.java:1096) 07-06 17:14:43.999: I/dalvikvm (478): threadid=7: 响应信号 3 07-06 17:14:43.999: E/dalvikvm(478): 无法打开堆栈跟踪文件'/data/anr/traces.txt': 权限被拒绝Strips$StripsEngine.run(Strips.java:81) 07-06 17:14:43.869: E/BaseSurfaceHolder(478): 在 java.lang.Thread.run(Thread.java:1096) 07-06 17:14: 43.972: W/dalvikvm(478): threadid=15: 线程退出未捕获异常 (group=0x4001b188) 07-06 17:14:43.979: E/AndroidRuntime(478): 未捕获处理程序:线程 Thread-8 由于未捕获而退出异常 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): at com.mendel.strips.Strips$StripsEngine.run (Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): 在 java.lang.Thread.run(Thread.java:1096) 07-06 17:14:43.999: I/dalvikvm (478): threadid=7: 响应信号 3 07-06 17:14:43.999: E/dalvikvm(478): 无法打开堆栈跟踪文件'/data/anr/traces.txt': 权限被拒绝81) 07-06 17:14:43.869: E/BaseSurfaceHolder(478): 在 java.lang.Thread.run(Thread.java:1096) 07-06 17:14:43.972: W/dalvikvm(478): threadid =15:线程以未捕获的异常退出(组=0x4001b188)07-06 17:14:43.979:E/AndroidRuntime(478):未捕获的处理程序:线程 Thread-8 由于未捕获的异常而退出 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): 在 com.mendel.strips.Strips$StripsEngine.run(Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): 在 java.lang.Thread.run(Thread.java:1096) 07-06 17:14:43.999: I/dalvikvm(478): threadid=7: 反应信号 3 07-06 17:14:43.999:E/dalvikvm(478):无法打开堆栈跟踪文件“/data/anr/traces.txt”:权限被拒绝81) 07-06 17:14:43.869: E/BaseSurfaceHolder(478): 在 java.lang.Thread.run(Thread.java:1096) 07-06 17:14:43.972: W/dalvikvm(478): threadid =15:线程以未捕获的异常退出(组=0x4001b188)07-06 17:14:43.979:E/AndroidRuntime(478):未捕获的处理程序:线程 Thread-8 由于未捕获的异常而退出 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): 在 com.mendel.strips.Strips$StripsEngine.run(Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): 在 java.lang.Thread.run(Thread.java:1096) 07-06 17:14:43.999: I/dalvikvm(478): threadid=7: 反应信号 3 07-06 17:14:43.999:E/dalvikvm(478):无法打开堆栈跟踪文件“/data/anr/traces.txt”:权限被拒绝java:1096) 07-06 17:14:43.972: W/dalvikvm(478): threadid=15: 线程以未捕获的异常退出 (group=0x4001b188) 07-06 17:14:43.979: E/AndroidRuntime(478):未捕获的处理程序:线程 Thread-8 由于未捕获的异常而退出 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): at com.mendel.strips.Strips$StripsEngine.run(Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): at java.lang.Thread.run(Thread.java:1096) 07 -06 17:14:43.999: I/dalvikvm(478): threadid=7: 响应信号 3 07-06 17:14:43.999: E/dalvikvm(478): 无法打开堆栈跟踪文件'/data/anr /traces.txt':权限被拒绝java:1096) 07-06 17:14:43.972: W/dalvikvm(478): threadid=15: 线程以未捕获的异常退出 (group=0x4001b188) 07-06 17:14:43.979: E/AndroidRuntime(478):未捕获的处理程序:线程 Thread-8 由于未捕获的异常而退出 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): at com.mendel.strips.Strips$StripsEngine.run(Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): at java.lang.Thread.run(Thread.java:1096) 07 -06 17:14:43.999: I/dalvikvm(478): threadid=7: 响应信号 3 07-06 17:14:43.999: E/dalvikvm(478): 无法打开堆栈跟踪文件'/data/anr /traces.txt':权限被拒绝未捕获的处理程序:线程 Thread-8 由于未捕获的异常而退出 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): at com.mendel.strips.Strips$StripsEngine.run(Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): at java.lang.Thread.run(Thread.java:1096) 07 -06 17:14:43.999: I/dalvikvm(478): threadid=7: 响应信号 3 07-06 17:14:43.999: E/dalvikvm(478): 无法打开堆栈跟踪文件'/data/anr /traces.txt':权限被拒绝未捕获的处理程序:线程 Thread-8 由于未捕获的异常而退出 07-06 17:14:43.990: E/AndroidRuntime(478): java.lang.NullPointerException 07-06 17:14:43.990: E/AndroidRuntime(478): at com.mendel.strips.Strips$StripsEngine.run(Strips.java:82) 07-06 17:14:43.990: E/AndroidRuntime(478): at java.lang.Thread.run(Thread.java:1096) 07 -06 17:14:43.999: I/dalvikvm(478): threadid=7: 响应信号 3 07-06 17:14:43.999: E/dalvikvm(478): 无法打开堆栈跟踪文件'/data/anr /traces.txt':权限被拒绝运行(Thread.java:1096)07-06 17:14:43.999:I/dalvikvm(478):threadid=7:对信号 3 做出反应 07-06 17:14:43.999:E/dalvikvm(478):无法打开堆栈跟踪文件'/data/anr/traces.txt':权限被拒绝运行(Thread.java:1096)07-06 17:14:43.999:I/dalvikvm(478):threadid=7:对信号 3 做出反应 07-06 17:14:43.999:E/dalvikvm(478):无法打开堆栈跟踪文件'/data/anr/traces.txt':权限被拒绝

0 投票
3 回答
26898 浏览

android - Android 应用程序在被杀死时不会调用“onDestroy()”(ICS)

我正在使用蓝牙通信(使用专有协议)开发一个 android 应用程序,我需要捕捉应用程序被杀死的时刻。

我想使用“onDestroy()”方法,但每次应用程序被杀死时都不会调用它。我注意到当我按下后退按钮时会调用它,并且只有在我从任务管理器中终止应用程序时才会调用它。

问题是:我怎样才能捕捉到应用程序被杀死之前的时刻?

这是我尝试使用的代码:

不幸的是,每次我从任务管理器关闭应用程序时,都不会调用 finish() 并且不会调用 onDestroy。

我该如何处理?

0 投票
5 回答
10429 浏览

android - Android 后退按钮行为

假设我们有一个具有默认行为的默认空活动,使用默认意图标志启动。用户按下设备上的后退按钮。活动消失了……但实际上如何?

  • 按下后退按钮的行为方式是否相同finish()
  • 活动是否立即被破坏(onDestroy被调用)?
  • 活动是否保证被销毁,但不是立即销毁?
  • 是否有可能该活动不会被销毁并且将来启动此活动时该实例将被重用?(所以只有onPauseand onStop-> onStartandonResume被调用?)

我正在寻找一个可靠的答案,所以如果您不确定这里会发生什么,请不要回答。

0 投票
2 回答
159 浏览

android - 单击另一个应用程序时,我的应用程序会自动销毁吗?

我的应用程序在我可以选择另一个应用程序的同时运行,我的应用程序被自动销毁。如何避免破坏。

0 投票
3 回答
243 浏览

android - onDestroy 丢失。自动完成对我没有帮助

我想在活动结束时调用onDestroy() 。
这是我放的:

但是,它永远不会被调用。事实上,当我使用自动完成时,onDestroy 永远不会出现......但是 onPause、onCreate、onStop .... 是的

那么我在这里想念什么吗?毕竟我可能太傻了……

0 投票
2 回答
1511 浏览

android - 如果不能可靠地调用 Activity.onDestroy(),为什么要覆盖它?

我很困惑为什么有人会根据文档Activity.onDestroy()覆盖而不是if :onPause()

在某些情况下,系统将简单地终止活动的托管进程,而不在其中调用此方法(或任何其他方法),

onDestroy()尽管有这个警告,我还是看到了很多覆盖的代码。为什么?