从应用开始启动服务,而不是活动

时间:2012-10-10 10:33:40

标签: android android-service

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

我发现了这个question,但最重要的答案似乎相当笨拙,任何人都有更好的主意?

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

1 个答案:

答案 0 :(得分:12)

一般来说,活动不必显示任何用户界面 - 它通常会显示但不是强制性的。因此,您只需将应用程序的起点设置为“隐形”活动即可。隐形意味着以

为主题
android:theme="@android:style/Theme.NoDisplay"

或者只是您的代码不会执行任何setContentView(),一旦您的onCreate()工作完成,您就会启动另一项活动并使用finish()终止此活动 - 并且不会弹出任何用户界面从那个活动开始 - 这样你就可以轻松地从在活动子类中完成工作中获益(对于某些任务可能更简单)并且仍然不需要任何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();
   }

}