Android - 以编程方式从后台恢复应用程序

时间:2012-10-17 22:50:34

标签: android performance background onpause

我需要在应用程序进入后台后立即恢复我的应用程序。

我不喜欢我的解决方案因为有一些错误并且性能不太好,这就是我尝试的:

    @Override
protected void onPause() {
       super.onPause();
       Intent intent = new Intent(this, MainActivity.class);
       intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
       intent.setAction(Intent.ACTION_MAIN);
       startActivity(intent);
}

这是一个单独的Activity应用程序,可以加载具有许多动态和Flash内容的webview,同时每隔几秒更新一次状态,每隔几秒从Web获取信息。 因此,每次在后台重新创建活动时都不要简单快速。 重新启动应用程序需要大约3-4秒,对我来说太多了。如果该秒之间的用户单击主页中的设置图标,则应用程序不会再次启动。我不知道为什么,经过大量谷歌搜索后我在这里写信:)请帮帮我!

3 个答案:

答案 0 :(得分:1)

您可以尝试在Android清单中的android:persistent="true"元素中设置<application>,但我认为如果您的应用程序未作为默认系统的一部分安装,Android操作系统将忽略该请求图像。

Android SDK文档具体说明“应用程序通常不应设置此标志;持久性模式仅适用于某些系统应用程序。”你也会嚼掉很多电池。 Android专门针对应用程序在不使用时保持运行的任何好方法而设计,因此操作系统可以正确地执行多任务,从而使电池使用保持合理。可以将服务设置为在前台运行(Service.startForeground()),但操作系统要求它们在通知区域中提供窗口小部件,以便用户知道该服务始终处于打开状态。

对于它的价值,移动设备上的用户比桌面用户更容忍延迟,所以它可能没有你想象的那么糟糕。

答案 1 :(得分:1)

我认为你想要的是实现主屏更换。基本上,您添加了一个intent过滤器,以便您的应用程序响应用户按下主页键时广播​​的意图。你可以在这里阅读更多相关信息。

  

Android Listen Home button

请注意,如果您这样做,您的用户至少会得到一个选择器,询问他们是否要运行您的应用或标准主屏幕应用。用户可以选择将您的应用设置为默认主屏应用。

话虽如此,除非你有一个非常特殊的情况,比如你正在构建一个专用于你的应用程序的软件/硬件组合设备,你几乎肯定不想这样做。 CommonsWare所说的在这方面是正确的。如果你试图接管这个设备,你肯定会得到一个卸载,或者来自技术不太精通的用户的愤怒的电子邮件,你碰巧会把你的应用程序变成默认的主屏幕。

答案 2 :(得分:0)

  

因此,每次在后台重新创建活动时都不会简单快速

当用户按下HOME时,您的过程会持续一段时间。如果用户在几分钟(或者甚至几小时)内返回,您的流程仍然存在,用户将返回您的活动。

但是,如果用户离开相当长的一段时间,或者用户使用他们的设备做了很多事情(例如,运行一堆应用程序),Android将终止您的进程以释放内存以用于其他事情正在发生。确实需要多长时间&#34;相当长的一段时间&#34;是,或者他们的设备和#34;有多少将取决于各种因素,例如他们运行的其他应用程序,设备中有多少RAM,每个应用程序堆的内容大小(与Android操作系统版本和屏幕大小相关),等等。

你正在尝试的 - 糟糕的是 - 要强迫用户永远不要离开你的应用。您说您比用户更重要。您的用户可能不同意您的态度。

您可以通过减少应用程序来帮助您的事业,从而减少内存消耗。一种方法是做到这一点,并长期帮助自己,就是摆脱闪存内容&#34;。到明年的这个时候,大多数用户都无法运行你的应用程序,因为Flash不再适用于Jelly Bean及更高版本。启动Flash插件也会降低您的活动的启动时间。

除此之外,对于WebView之外的任何应用程序逻辑,您可以使用Traceview来确定花费的时间,以尝试提高性能。