我做了一个简单的例子来测试一个不可杀戮的服务。我试图在被操作系统杀死后立即重启。
一切都运作良好。但是,我发现该服务有时会被操作系统频繁杀死,并在6.0以上的操作系统中重新启动。有时,在启动服务后30秒内调用onStartCommand。我不知道为什么。
6.0以下的操作系统运行良好。
我的代码很简单。
public class DataCollectorService extends Service {
public static BroadcastReceiver broadcastReceiver;
private Intent intent_data_processor;
private PendingIntent sender_data_processor;
private AlarmManager alarmMgr;
private LocalBroadcastManager a_manager;
private String TAG = "DataCollectorService";
private DatabaseReference mFirebaseDatabaseReference;
private final IMyAidlInterface.Stub mBinder = new IMyAidlInterface.Stub() {
public void basicTypes(int anInt, long aLong, boolean aBoolean,
float aFloat, double aDouble, String aString) {
// Does nothing
}
};
public DataCollectorService(Context applicationContext) {
super();
Log.i("HERE", "here I am!");
}
public DataCollectorService() {
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
release();
}
@Override
protected void finalize() throws Throwable {
super.finalize();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
Log.e("TAG", "START");
Log.e("TAG", "DataCollectorService onStartCommand");
return START_STICKY;
}
@Override
public IBinder onBind(Intent arg0) {
return mBinder;
}
@Override
public boolean onUnbind(Intent arg0) {
return true;
}
@Override
public void onRebind(Intent arg0) {
}
然后我还在Manifest中设置了以下服务。 机器人:启用=“真” 机器人:导出= “假”
在启动后的几秒钟内重启服务的原因是什么?