我面临类似的问题
Not sure if service onDestroy is called from BroadcastReceiver
由于没有得到答复,我正在创造新的问题。我的服务代码如下所示(完整代码未粘贴):
public class GPSLogger extends Service implements LocationListener,
com.google.android.gms.location.LocationListener,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(GPSLogger.TAG, "StartAtBootService -- onStartCommand()");
// lot of init code
if (isGooglePlayServicesAvailable()) {
mLocationRequest = LocationRequest.create();
mLocationRequest.setInterval(freq);
mLocationRequest.setFastestInterval(freq / 4);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
return START_STICKY;
}
}
@Override
public void onDestroy() {
Util.sendNotification("Service", "OnDestroy", this, 100);
stopLocationUpdates();
DBHelper.closeDb();
Log.i(GPSLogger.TAG, "StartAtBootService Destroyed");
Intent broadcastIntent = new Intent("cc.siara.gpslogger.RestartService");
sendBroadcast(broadcastIntent);
super.onDestroy();
}
}
我可以从ADB日志中看到操作系统多次启动服务并调用onStartCommand。但我甚至找不到“StartAtBootService Destroyed”。
我正在测试的设备是三星SM-J120G Android 5.1.1 API 22。
我知道Android会暂停服务以释放内存。但是,无论如何,当Android这样做时我可以运行我的清理代码吗?
答案 0 :(得分:1)
onDestroy将在以下场景中调用 -
当您停止服务时。
当操作系统内存耗尽并决定停止您的应用时。
当您通过活动或广播接收者的意图呼叫停止服务时。