2013-08-05 191 views
0

我有一个Android应用程序,它应该始终在后台处于活动状态。我已经将它构建为普通的Android应用程序。它工作得很好,但是,有时它会自行停止(或通过Android操作系统),并且必须重新运行它。这不是因为造成错误,这是因为它可能是一个正常的应用程序。应用程序本身(或通过Android操作系统)停止

我该如何在后台进行工作?

UPDATE

应用程序具有GUI。

+2

你应该使用服务 – Geros

回答

1

由于内存限制,Android操作系统可能在任何给定时间终止进程,您可以学习how Android manages memory here。由于@Karakuri提到开始一项服务会使它不太可能被终止,另一个使用服务的优点是,即使在它被杀死的情况下,当内存限制允许时,操作系统也会尝试恢复:

注意这意味着大部分时间你的服务正在运行,如果系统在高内存压力下可能会被系统杀死。如果发生此 ,系统将稍后尝试重新启动该服务。

您可以从Android dev site了解有关服务的更多详细信息。

+0

可以一个服务有GUI吗? –

+0

不,如果它有GUI,它不再是服务。您可以将“活动”和“服务”组合在一起,其中“活动”提供了GUI,服务提供了后台功能。你可以检查这个[StackOverflow问题](http://stackoverflow.com/questions/14695537/android-update-activity-ui-from-service)关于如何推动从服务到活动的变化的想法。 – Kai

1

创建服务并致电startForeground()使其成为前台服务。它不会阻止它被杀,只是使它不太可能,因为Android会试图保持它比非前台服务更长的时间。请注意,使用前台服务时,您需要在状态栏上使用图标进行持续通知。

1

假设您正在使用Service。如果您从服务的onStartCommand()返回START_STICKY,那么即使android必须终止该服务,只要资源空闲,它就会重新启动。

+1

可以有服务有GUI吗? –

+0

@MariusKavansky服务不能像活动一样直接显示视图,但服务可以显示活动通知(在状态栏中),这样做会使其成为前台服务。 –

+0

我需要这个应用程序有GUI。 –

相关问题