2016-03-20 146 views
1

基本上,我有一项服务每隔30分钟运行一次以检查我的位置,当位置更改时弹出基本通知。当我的应用程序关闭时,我只需要此服务(也停止/暂停)。所以即时通讯问我应该在哪里开始我的活动?Android:关闭我的应用程序时启动我的服务

我想要类似于Facebook,Instagram和大多数应用程序都具有...从后台运行的服务,当通知弹出时只需打开应用程序。当应用程序打开时,该服务不应该做任何事情。

我试过onDestroy()方法(在我的MainActivity中),但没有解决,onStop()方法也没有。

我能解释一下自己吗?

谢谢!

+0

我不认为这是一个好主意。我的意思是,如果有人刚刚打开关闭或反过来你的应用程序,你的服务想法将没有多大的帮助... – Mohit

+0

你可以随时运行你的服务来获取位置... – Mohit

回答

0

重复执行的任务应使用AlarmManager(或JobScheduler)安排。

这通常在BroadcastReceiver中完成,其对BOOT_COMPLETED作出反应。

如果要在活动处于活动状态时取消这样的工作,请拨打AlarmManager中的相应方法onResume和。

+0

谢谢队友!我认为这是方式。我一直在寻找,我发现这篇文章真的很有趣太http://stackoverflow.com/questions/9869153/android-periodic-gps-location-updates-with-alarmmanager-inside-a-service –

0

如果你希望你的服务,在任何时候事件的背景关闭应用程序之后运行,你需要让你的服务STICKY,你可以做的是,在OnStartCommand

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.i("LocalService", "Received start id " + startId + ": " + intent); 
    // We want this service to continue running until it is explicitly 
    // stopped, so return sticky. 
    return START_STICKY; 
} 

注意,它返回START_SICKY它告诉操作系统在有足够的内存后重新创建服务,并再次用null意图调用onStartCommand()。

另请参阅关于application:persistent这是“应用程序是否应始终保持运行”。这更麻烦 - 系统会尽量不杀你的应用程序,这会影响系统中的其他人,你应该小心使用它。

相关问题