我已经看到Lookout,JuiceDefender和MagicJack等应用程序无限期地在后台运行,除非用户直接通过任务管理器强制关闭。 (即便如此,在Gingerbread中,除非你浏览设置中“Downloaded Apps”下运行的应用程序,否则它将关闭它,一旦你进入菜单,你可以选择管理应用程序“清除记忆“和”强制关闭“。
我想知道这是如何实现的?我需要为我的应用程序做类似的事情,但我不知道如何避免Android操作系统的自动任务查杀..并且不要说这是不可能的,因为如果这是真的,JuiceDefender,MagicJack和Lookout就不会工作
答案 0 :(得分:1)
您可以获得的服务是无限期保持活力。您可以在Service的onStartCommand方法上实现返回Service.START_STICKY。
每当操作系统需要资源并选择终止您的应用时,只要资源再次可用,您的服务就会重新生成。
请记住,拥有一个持续存活的应用程序将导致消耗手机的电池。您应该(至少)通知用户您的应用程序在后台仍处于活动状态。
最重要的是,您可以register a broadcast receiver获取BOOT_COMPLETED事件,以便在设备重新启动时重新启动服务。但是,请记住,这可能会导致手机电池耗尽,因此请注意您在服务中所做的事情。
答案 1 :(得分:1)
我相信这些应用在其活动开始时(即调用Service
时)会启动onCreate()
。
当应用程序暂停时,Service
继续运行。启动Service
后,您可以在START_STICKY
中返回 onStartCommand
。
此外,为了防止服务被Android的内存杀手杀死,您可以通过调用startForeground()
来指定您的服务对用户很重要。 Android开发者网站声明:
前台服务是一种被认为是某种东西的服务 用户积极地意识到并因此不是系统的候选者 在内存不足时杀人。
答案 2 :(得分:0)
我正在创建一个应用程序,我必须在OnCreate()中使用以下一个或多个超级函数:
onDestroy()
onPause()
onResume()
onSaveInstanceState()
从内存中完全关闭应用。并且也不要使用Activity.finish()方法。通常Android在需要内存时关闭应用程序做得非常好,称为弹出堆栈而不建议强行留在内存中,除非有非常好的理由。希望能帮助到你。 您还可以查看Android DOC网站以获取更多信息和示例。
答案 3 :(得分:0)
您需要启动服务。服务在后台运行,对于推送警报很有用。 这有关于它的一些链接:
http://developer.android.com/guide/components/services.html http://www.vogella.com/articles/AndroidServices/article.html
答案 4 :(得分:0)
在服务onStartCommand方法中返回“START_STICKY”。
http://developer.android.com/guide/components/services.html
/托马斯