Android服务频繁重启。。为什么?
为了测试一个不可终止的服务,我做了一个简单的例子。我正在尝试在它被操作系统杀死后立即重新启动 一切正常。但是,我发现该服务有时频繁地被操作系统终止,并在6.0以上的操作系统中重新启动。有时,启动服务后30秒内调用onstart命令。我不知道为什么 6.0下的操作系统运行得非常好 我的代码很简单Android服务频繁重启。。为什么?,android,service,Android,Service,为了测试一个不可终止的服务,我做了一个简单的例子。我正在尝试在它被操作系统杀死后立即重新启动 一切正常。但是,我发现该服务有时频繁地被操作系统终止,并在6.0以上的操作系统中重新启动。有时,启动服务后30秒内调用onstart命令。我不知道为什么 6.0下的操作系统运行得非常好 我的代码很简单 public class DataCollectorService extends Service { public static BroadcastReceiver broadcastReceiver
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) {
}
然后我还在清单中设置了如下服务。
android:enabled=“true”
android:exported=“false”
服务在启动后几秒钟内重新启动的原因是什么?可能是打瞌睡模式:为什么需要“不可修复”的服务?似乎我们即将不尊重用户的意愿:p为什么不使用可修复的后台模式?
“测试不可修复的服务。”
,android世界中没有这样的东西,至少不是在“普通”用户空间,它将是一个实时数据记录应用程序。是的,android世界里没有这样的东西,所以我放了一个广播接收器,捕捉到了ondestroy时刻。然后我重新启动服务。问题是,有时甚至在启动此应用程序(OS>6.0)后立即将其销毁并重新启动。我认为这不是因为操作系统,而是因为开始的时候有粘性。但是,它应该是在应用程序启动几分钟后,而不是在启动几分钟后。当设备绝对不处于睡眠模式(屏幕打开,但应用程序在后台充电)时,您是否观察到这种行为?