我的IntentService出了问题。每次启动我的服务时,只要服务空闲,就会调用onDestroy()方法。我设置我的服务在前台运行,尽管如此,服务仍然被立即杀死。我的应用程序中只有一个其他活动,它没有调用stopService()。
阅读开发人员文档给我的印象是,调用startForeground()将允许您的服务保持,即使在空闲时,除非对内存有非常高的需求,或者我读错了吗?
我的代码如下:
public class FileMonitorService extends IntentService {
public int mNotifyId = 273;
public FileMonitorService(){
super("FileMonitorService");
}
@Override
protected void onHandleIntent(Intent arg0) {
}
@Override
public void onDestroy() {
Toast.makeText(this, getText(R.string.toast_service_stop), Toast.LENGTH_SHORT).show();
stopForeground(true);
super.onDestroy();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Notification notification = new Notification(R.drawable.icon, getText(R.string.notification_short), System.currentTimeMillis());
notification.flags|=Notification.FLAG_NO_CLEAR;
Intent notificationIntent = new Intent(this, FileMonitorActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(this, getText(R.string.notification_short),getText(R.string.notification_long), pendingIntent);
startForeground(mNotifyId, notification);
Toast.makeText(this, getText(R.string.toast_service_start), Toast.LENGTH_SHORT).show();
return super.onStartCommand(intent, flags, startId);
}
}
答案 0 :(得分:4)
您需要考虑使用常规Service
而不是IntentService
。 IntentService
旨在在有工作要做的同时继续运行。完成onStartCommand
方法后,它会尝试停止。
请参阅docs:
客户端通过startService(Intent)调用发送请求;根据需要启动服务,使用工作线程依次处理每个Intent,在工作失败时自行停止。
(强调我的)