2015-11-06 156 views
1

我正在尝试创建一个后台服务,每隔10分钟就会调用一次,执行一个任务,并且在应用程序关闭时不会终止。为什么后台服务在应用程序关闭时停止工作?

以下是代码片段:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_location_service); 

    Intent intent = new Intent(this, AlarmReceiverLifeLog.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); 
    AlarmManager alarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    Calendar calendar = Calendar.getInstance(); 
    alarms.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 10 * 60 * 1000, pendingIntent); 
} 

onCreate,它会调用AlarmReceiverLifeLog类每十分钟。以下是AlarmReceiverLifeLog类的代码:

public class AlarmReceiverLifeLog extends BroadcastReceiver { 
    static Context context; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent ll24Service = new Intent(context, LifeLogService.class); 
     context.startService(ll24Service); 
    } 
} 

public class LifeLogService extends Service { 


    @Override 
    public void onCreate() { 
     super.onCreate(); 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     return START_STICKY; 
    } 

    @Override 
    public void onDestroy() { 
    } 

    @Override 
    public void onTaskRemoved(Intent rootIntent) { 
     Intent restartService = new Intent(getApplicationContext(), this.getClass()); 
     restartService.setPackage(getPackageName()); 
     PendingIntent restartServicePI = PendingIntent.getService(getApplicationContext(), 1, restartService, PendingIntent.FLAG_ONE_SHOT); 
     Calendar calendar = Calendar.getInstance(); 
     AlarmManager alarmService = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
     alarmService.set(AlarmManager.ELAPSED_REALTIME, calendar.getTimeInMillis() + 100, restartServicePI); 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 
} 

我无法弄清楚什么我已经错过了。当我关闭应用程序时,后台服务正在死亡。

任何人都可以提出任何关于此?

+0

你需要扩展intentservice,创建一个单独的线程来执行你的任务,然后服务将持续 – Bhargav

回答

0

当应用程序关闭时,服务也会关闭,也是因为它们位于一个线程中,所以服务应该放在另一个线程上,以防止它被关闭,查看该服务并查看是否使服务保持活动状态报警管理器这里的一个例子http://www.vogella.com/articles/AndroidServices/article.html这样你的服务将不会显示在通知中。

相关问题