我有一个背景Service
。我希望它的生命周期独立于应用程序Activity
的生命周期。
是的,我知道我必须手动关闭服务作为应用程序逻辑的一部分。
答案 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
是什么。