Android应用程序启动时如何启动服务?

时间:2015-04-05 13:07:15

标签: android android-service android-manifest android-lifecycle

我有一个背景Service。我希望它的生命周期独立于应用程序Activity的生命周期。

是的,我知道我必须手动关闭服务作为应用程序逻辑的一部分。

1 个答案:

答案 0 :(得分:3)

  

如何与应用程序的第一个活动一起启动已启动的服务?

在第一个startService(intent)的{​​{1}}方法中致电onCreate()

  

我有后台服务。我希望它的生命周期独立于应用程序活动。

最好的方法是为Activity创建PendingIntent并将其注册到Service

AlarmManager

这将确保Intent i = new Intent(this, LocationService.class); PendingIntent pi = PendingIntent.getService(this, 1, intent, PendingIntent.FLAG_CANCEL_CURRENT); AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE); am.setInexactRepeating(AlarmManager.RTC_WAKEUP,0,60*60*1000, pi); /* start Service every hour. */ 定期定期启动,无论用户是否已将应用程序带到前台。

  

如何在启动Android应用程序时启动服务?

您可以通过扩展Application类自动启动应用程序启动Service

Service

并使用

修改public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); startService(new Intent(this, NetworkService.class)); } } 中的application标记
manifest

这是有效的,因为<application android:icon="@drawable/icon" android:label="@string/app_name" android:name="com.mycompanydomain.MyApp"> 类是应用程序启动时要创建的第一个实体之一。这将启动Application,无论启动Service是什么。