问题标签 [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.
android - Android:旋转显示时服务被破坏
我有一个在单独进程中运行的服务。我发现在主进程 UI 线程从 onDestroy() 退出后,我的服务正在被销毁,即使我已经为应用程序上下文提供了绑定并指定了 BIND_AUTO_CREATE。
在我的主进程的 UI 线程 onCreate() 我有这个绑定代码:
在我的主进程的 UI 线程 onDestroy() 我有这个解绑代码:
请注意,我从不调用 stopService()。
Android 的 bindService() 文档说:
只要调用上下文存在,系统就会认为该服务是必需的。
如果我没看错的话,因为我提供了应用程序的上下文,所以系统认为该服务在应用程序的整个生命周期内都是必需的。
我认为应用程序的上下文可能会随着 onDestroy() 而消失。这就是 Android 的文档对 getApplicationContext() 所说的:
返回当前进程的单个全局应用程序对象的上下文。
如果应用程序的上下文因 onDestroy() 而死,那么我认为 Android 有一个大问题。问题在于,当显示器旋转时,会调用 onDestroy()(并立即调用 onCreate())。因此,效果是当显示器旋转时 - 在我的情况下它经常发生!-- 我的服务总是退出。
请注意,我的应用程序进程的 pid 永远不会改变,即它是同一个进程。鉴于 getApplicationContext() 的文档说明“当前进程”,这一点很重要。
以下是我的调试日志显示的内容:
04-03 05:15:12.874: DEBUG/MyApp(841): 主 onDestroy
04-03 05:15:12.895: DEBUG/MyApp(847): 服务 onUnbind
04-03 05:15:12.895: DEBUG/MyApp(847 ): service onDestroy
04-03 05:15:12.934: DEBUG/MyApp(841): main onCreate
04-03 05:15:12.966: DEBUG/MyApp(847): service onCreate
04-03 05:15:12.975: DEBUG /MyApp(847): 服务绑定
所以我的问题是:
1)我对绑定/解除绑定的理解是否正确?
2) 有没有办法让我的服务在调用 UI 线程的 onDestroy() 时不被破坏?
问题 #2 的一个技巧是永远不要解除绑定。但我不喜欢它,因为每次调用 onDestroy() 时我都会泄漏一个绑定。我可以“记住”我有一个泄露的绑定,并且只泄露了那个,但是我有级联的黑客攻击,它真的很难看。
android - 服务可以正常工作几个小时,而不是更多的响应
当我在 Gmail 客户端中收到电子邮件时,我想在 GmailService 类中运行 CippaLippa() 方法。
我在 AndroidManifest 中有一个接收器和一个服务...
而这些课程...
我的问题:在几个小时内一切正常,当我收到来自 Gmail 的通知时,CippaLippa() 方法会触发......然后,几个小时后,当我收到 gmail 通知时,CippaLippa() 方法不再触发。
也许,有一种方法可以告诉 GmailService 类“保持活力”并继续监视 Gmail 事件?我认为这不是由于 Android OS 杀死了未使用的类,因为那是后台服务而不是 Activity。我不知道。
android - 处理线程
管理在后台工作的线程的正确方法是什么?
例如,我有创建多个线程的 Activity。我需要执行以下操作:
1)当 Application 被销毁时销毁所有线程
2)如果用户离开 Activity,则暂停在 Activity 中创建的
线程 3)如果 Activity 被销毁,则销毁在 Activity 中创建的线程
我唯一想到的是将所有线程变量声明为 public 以便能够对我上面列出的这些事件发出 t.destroy() 或类似的东西。首先,我不确定这是否正确,其次,我不喜欢它,因为我必须更改代码以确保可以引用我创建的所有线程。
例如,我的 Activity 实例化新对象(例如 LoadImages.class)并且对象根据要加载的图像数量创建多个线程的情况。从调用活动中看不到线程。
那么,我是否必须将线程引用传递给调用活动,或者有某种方法可以知道谁是线程的父级并仅销毁具有特定父级活动的线程?
android - 动态注册广播接收器
我在清单文件中注册了这样的广播接收器(如下所示)。它工作正常。
但它始终保持注册状态。即每当手机启动时,我的应用程序就会启动。但我只想要一次。
我了解到,如果它是动态注册的,我们可以做到这一点。即我们可以在 onPause() 或 onDestroy() 方法中取消注册它。如果可能的话,请给我代码来做到这一点。我是这方面的新手。任何帮助,将不胜感激。谢谢你。
我尝试了以下代码,但没有用:
android - 我可以检测到我的服务何时被“高级任务杀手”杀死
我的应用程序运行地理定位服务,用户可以通过切换按钮激活或停用该服务。为了检查服务的状态,我在 Shared Preferences 中写了一个布尔值。由于我的服务的 onDestroy(),我听到了服务的开始和结束。
我的问题是:当用户用“高级任务杀手”杀死服务时,我不知道服务被杀死了,onDestroy没有被调用!
我该如何处理?
谢谢你的帮助。
弗洛朗
android - 如果我们在 Android 应用程序的每个活动中重写 OnDestroy() 方法可以吗?
OnDestroy()
如果我们在 Android 应用程序的每个活动中覆盖方法可以吗?
仅仅通过调用Method super.onDestroy()
,onDestroy()
它会清理内存资源吗?
android - Android 2.2.1、方向改变和 onDestroy()
我有一个非常令人发指的错误,我正试图追踪它,我遇到了以下情况。
这是我的场景,我启动了一个活动,我将屏幕方向更改为横向,我再次将其更改回纵向,然后单击设备后退按钮。在我这样做之后,我的活动的 onDestroy 永远不会被调用。当我改变方向时调用它,但当用户点击返回键时不会调用它。
- 它仅在未连接调试器时发生在 Android 2.2.1 上。
- 它涉及更改屏幕方向。
- 在屏幕方向之后永远不会调用 onDestroy。
我在这里束手无策,我正在寻找关于什么可以阻止系统调用 onDestroy 的想法......
android - 是否有适用于 Android 的 Application::onDestroy() 等效项?
嗨,我正在使用 Application::onCreate 来放置我的应用程序的初始化代码,但是在等待一段时间并启动其他应用程序时,我注意到 Application 类的实例再次被创建......
如何在 Android 关闭我的应用程序实例时全局检测?
android - onDestroy() 或 finish() 是否真的杀死了活动?
其实我知道我问的是Android的简单和基本概念。finish()
但是我对这些和onDestroy()
方法有点困惑。这是否会杀死活动并释放与这些活动相关的资源?
我尝试了一个只包含一个活动的简单应用程序。我认为这个概念就像当应用程序运行时,活动将启动。当我们单击后退按钮时,它将完成。我在每个生命周期方法中给出了一些 toast 消息,用于了解内存使用情况。当我单击后退按钮时,它执行onPause()
,onStop()
和onDestroy()
. 我以为这个活动结束了。但是当我再次重新启动应用程序时,它比上次占用了更多的内存。每次我从 Eclipse 运行应用程序或从主屏幕重新启动应用程序时都会发生这种情况。
为什么会这样?我如何才能真正销毁应用程序/活动以释放内存?
我包括我的代码。我只在课堂上给出一条祝酒词。然后内存使用量也在增加。
每次运行应用程序时,分配的大小都会增加,例如:3302744、3442384、3474552
显现:
为什么内存每次都在增加?
android - 不要在 onBackPressed 上调用 onDestroy
我不希望我的活动在按下后退按钮时被破坏。我的应用程序与 1.6 SDK 兼容。参考http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html和Override back button to act like home button,我选择了以下代码:
当我按下后退按钮时,我会记录这些日志
我没有覆盖 moveTasToBack()。Anu clu 我该怎么做才能在按下后退按钮时不被破坏。也许我只想忽略按钮或隐藏活动。
任何线索,为什么它没有按预期工作。
谢谢