7

我想在启动Service应用程序而不是 Activity 时启动;然后说 Service will launch an Activity。我需要这样做,因为我的应用程序需要始终运行,而当我说始终运行时,我的意思是始终运行。我设法避免操作系统杀死我的应用程序的唯一方法是启动一个作为粘性的服务,如果 Android 杀死我的 Activity 或我的服务,我将立即重新启动它们。

我发现了这个问题,但最佳答案似乎相当笨拙,有人有更好的主意吗?

PS:我知道这看起来不是一个非常友好的应用程序,但这是一个非常具体的研究场景,它不适合普通用户,即手机仅用于此目的;但即使内存专用于我的应用程序,Android 也会时不时地杀死它……我可能对 Android 所谓的严格内存管理方案的任何怀疑现在都消失了。

4

1 回答 1

13

一般来说,Activity 不必显示任何 UI - 它通常会显示,但它不是强制性的。因此,您可以简单地将应用程序的起点设置为您的“隐形”活动。而隐形意味着要么主题为

android:theme="@android:style/Theme.NoDisplay"

或者只是你的代码不会做任何事情setContentView(),一旦它在你的工作完成onCreate(),你开始另一个活动并终止这个活动finish()- 并且不会从该活动中弹出 UI - 这样你就可以轻松地从活动子类中的工作中受益(对于某些任务可能更简单)并且仍然不需要任何 UI:

public void onCreate(Bundle bundle) {
   super.onCreate(bundle);

   // [... do your job here...]

   // we're done, so let's jump to another acitivity
   // this can be skipped if you do not want to jump anywhere

   Intenet intent = new Intent(....)
   ...

   try {
      startActivity( intent );

      // finish him
      finish();

   } catch ( Exception e ) {
      e.printStackTrace();
   }

}
于 2012-10-10T10:38:06.617 回答