解决方法: 在启动service的时候,获取电源设备锁,等到停止服务的时候释放电源设备锁。 这个方法需要权限: uses-permission Android :name=android.permission.WAKE_LOCK/ @Override public void onCreate() { super .onCreate () ; acquireWakeLock() ;//
解决方法:
在启动service的时候,获取电源设备锁,等到停止服务的时候释放电源设备锁。
这个方法需要权限:
< uses-permission Android:name=”android.permission.WAKE_LOCK”/>
@Override
public void onCreate() { super.onCreate() acquireWakeLock() mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE) ..... }
private void acquireWakeLock() { L.l(TAG, "正在申请电源锁"); if (null == mWakeLock) { PowerManager pm = (PowerManager) this .getSystemService(Context.POWER_SERVICE); mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, ""); if (null != mWakeLock) { mWakeLock.acquire(); L.l(TAG, "电源锁申请成功"); } } } private void releaseWakeLock() { L.l(TAG, "正在释放电源锁"); if (null != mWakeLock) { mWakeLock.release(); mWakeLock = null; L.l(TAG, "电源锁释放成功"); } }
还有一点必须提醒,就是服务的开启,我们知道服务有两种方式启动,一种是startservice()方式启动,这种方式不随着Context的销毁而解除绑定导致服务停止,另一种方式是bindservice()方式,这种方式随着context的销毁而unbindservice,导致服务停止。
我们可以在application类中使用startservice启动所需的服务,然后到需要绑定该服务的Activity中使用bindservice再次绑定该服务,activity销毁时再unbindservice服务,此时并不会stopservice,除非显式调用stopservice方法才会导致服务停止。使用这中方法可以尽可能的提高服务的优先级,使服务一直在后台运行。
Android实现后台Service服务一直存在的解决思路
转载https://www.codesocang.com/appboke/36363.html