[英]Background data collector in Android restarts when App is terminated
我想用我的應用程序收集加速度計數據。 因此,我創建了一項服務,因此即使不再打開應用程序,應用程序也會在后台收集數據。
問題是,當我關閉應用程序時,該服務也會終止並重新啟動。 在此期間,它不會收集數據。
我嘗試了START_REDELIVER_INTENT
和START_STICKY
,都得到了相同的結果:當應用關閉時,服務會重新啟動。
有沒有辦法阻止應用終止時服務完全停止?
請注意,我的服務在單獨的進程中運行。
這是我的代碼:
@Override
public void onCreate() {
// start thread
HandlerThread thread = new HandlerThread("SensorData", Process.THREAD_PRIORITY_BACKGROUND);
thread.start();
looper = thread.getLooper();
handler = new BGHndlr(looper);
sensorMngr = (SensorManager) getSystemService(SENSOR_SERVICE);
reader = new SensorReader(sensorMngr);
accSensor = reader.getSingleSensorOfType(Sensor.TYPE_ACCELEROMETER);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Message message = handler.obtainMessage();
message.arg1 = startId;
handler.sendMessage(message);
return START_REDELIVER_INTENT;
}
嵌套類:
public class BGHndlr extends Handler implements SensorEventListener {
public BGHndlr(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
oSensorManager.registerListener(this, oAcceleroMeter, SensorManager.SENSOR_DELAY_FASTEST);
}
//int i = 0;
@Override
public void onSensorChanged(SensorEvent event) {
// do something
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {}
}
兩者的結果相同:關閉應用程序后,服務將重新啟動。
這是正常的Android
行為 , Android
應用程序開發人員對此無能為力。
請注意,我的服務在單獨的進程中運行。
和以前一樣( 您的問題中的所有事實都證明了這一點 )...就是說,
有沒有辦法阻止應用終止時服務完全停止?
否。您和其他人一樣,應該堅持Android
組件的生命周期。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.