Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android服务频繁重启。。为什么?_Android_Service - Fatal编程技术网

Android服务频繁重启。。为什么?

Android服务频繁重启。。为什么?,android,service,Android,Service,为了测试一个不可终止的服务,我做了一个简单的例子。我正在尝试在它被操作系统杀死后立即重新启动 一切正常。但是,我发现该服务有时频繁地被操作系统终止,并在6.0以上的操作系统中重新启动。有时,启动服务后30秒内调用onstart命令。我不知道为什么 6.0下的操作系统运行得非常好 我的代码很简单 public class DataCollectorService extends Service { public static BroadcastReceiver broadcastReceiver

为了测试一个不可终止的服务,我做了一个简单的例子。我正在尝试在它被操作系统杀死后立即重新启动

一切正常。但是,我发现该服务有时频繁地被操作系统终止,并在6.0以上的操作系统中重新启动。有时,启动服务后30秒内调用onstart命令。我不知道为什么

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) {

}
然后我还在清单中设置了如下服务。 android:enabled=“true” android:exported=“false”


服务在启动后几秒钟内重新启动的原因是什么?

可能是打瞌睡模式:为什么需要“不可修复”的服务?似乎我们即将不尊重用户的意愿:p为什么不使用可修复的后台模式?
“测试不可修复的服务。”
,android世界中没有这样的东西,至少不是在“普通”用户空间,它将是一个实时数据记录应用程序。是的,android世界里没有这样的东西,所以我放了一个广播接收器,捕捉到了ondestroy时刻。然后我重新启动服务。问题是,有时甚至在启动此应用程序(OS>6.0)后立即将其销毁并重新启动。我认为这不是因为操作系统,而是因为开始的时候有粘性。但是,它应该是在应用程序启动几分钟后,而不是在启动几分钟后。当设备绝对不处于睡眠模式(屏幕打开,但应用程序在后台充电)时,您是否观察到这种行为?