如何解决屏幕关闭时,Android Service未使用Wakelock我如何正确使用一个作为后台服务
我正在尝试开发一个Android服务,该服务在按下按钮时运行,并在按下按钮时停止。我试图使它即使在屏幕关闭时(无论是通过屏幕超时还是按下电源按钮)也能运行。我敢打赌,这是很普遍的概念,但是我没有找到任何让我意识到自己(很可能很显然)在做错事情的帖子。
清单具有权限
<uses-permission android:name="android.permission.WAKE_LOCK" />
服务从带有布尔意图的片段开始,以指定是否应获取唤醒锁
Intent intent = new Intent(mainActivity.getApplicationContext(),NetworkService.class);
intent.putExtra("Wake Lock",wakeLockBox.isEnabled());
mainActivity.startService(intent);
private PowerManager mPowerManager;
private PowerManager.WakeLock wakeLock;
private boolean wakeLockSet;
// service doing its thing code here
@Override
public int onStartCommand(Intent intent,int flags,int startId) {
Log.d("Service","Started");
wakeLockSet = intent.getBooleanExtra("Wake Lock",false);
// ...
setWakeLock();
// ...
return START_STICKY;
}
private void setWakeLock()
{
mPowerManager = (PowerManager) getSystemService(getApplicationContext().POWER_SERVICE);
wakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"NetworkService::WakelockTag");
wakeLock.acquire();
}
根据我以前的文章以及测试所得,释放唤醒锁的唯一方法是销毁服务。
@Override
public void onDestroy()
{
// ...
if (wakeLockSet) wakeLock.release();
Log.d("Service","Shutdown");
stopSelf();
}
每当我的屏幕关闭时,就会调用服务onDestroy()方法,并且该服务释放锁定会自行停止。因此,我对唤醒锁如何与应该在屏幕关闭时运行的服务一起使用感到困惑。
我已经尝试过前台服务:
在片段中
// notification builder made earlier
Intent intent = new Intent(mainActivity.getApplicationContext(),NetworkService.class);
intent.putExtra("Notification",builder.build());
intent.putExtra("Wake Lock",wakeLockBox.isEnabled());
mainActivity.startForegroundService(intent);
然后创建服务
private PowerManager mPowerManager;
private PowerManager.WakeLock wakeLock;
private boolean wakeLockSet;
// service doing its thing code here
@Override
public int onStartCommand(Intent intent,int startId) {
startForeground(400,intent.getExtras().getParcelable("Notification"));
Log.d("Service","NetworkService::WakelockTag");
wakeLock.acquire();
}
结果相同。欢迎任何想法,并愿意在需要时分享更多信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。