gpt4 book ai didi

android - PowerManager.PARTIAL_WAKE_LOCK 安卓

转载 作者:行者123 更新时间:2023-11-29 15:19:15 28 4
gpt4 key购买 nike

我很纠结要不要获取这个wakelock。例如。我有从 onReceive() 调用的这种类型的代码的 BroadcastReceiever (CONNECTIVITY_CHANGE、BOOT_COMPLETED 等)异步 即我正在启动 IntentService来自 onReceive()它执行繁重的工作。

private static void insertInDatabase(Context context /*, some data to be inserted in database*/) {
Database helper = Database.getInstance(context);
PowerManager pm = (PowerManager) context
.getSystemService(Context.POWER_SERVICE);
final WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, wakelockName);
wakeLock.acquire();
try {
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues cv = new ContentValues();
// insert data in database here
} finally {
wakeLock.release();
}
}

这种情况是获得 PowerManager.PARTIAL_WAKE_LOCK 的合适人选吗? ?

最佳答案

@paha 的回答忽略了一个重点:IntentService 是不够的。在 onReceive() 结束和 IntentService 启动之间,手机可能会再次进入休眠状态。您需要一个(静态)锁来弥合这个差距——这在 Mark Murpphy 的 WakefulIntentService 中实现了

所以保留 AlarmManager 和接收器,但从您的 onReceive() 启动一个 WakefulIntentService

参见:

关于android - PowerManager.PARTIAL_WAKE_LOCK 安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20321444/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com