wake_lock
必要がなくなったらすぐにを解放するのがベスト プラクティスであることはわかっていますが、たとえば、それを取得した や がロックを解放する前に終了または停止した場合はどうなりますかActivity
? Service
システムによって自動的にリリースされますか? その場合、システムはそれらを自動的に解放する必要があると思いますが、APIドキュメントには何も見つかりません..
編集:詳細情報を追加
ドキュメントを見るPowerManager.WakeLock
と、wake_locks がデフォルトで参照カウントされていることがわかりました (setReferenceCounted
こちらを参照)。つまり、アクティビティでウェイク ロックを取得し、PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "myWakeLock"); wl.acquire();
それを保持する参照変数wl
が範囲外になると、ウェイク ロックが参照カウントがゼロになったので解放されます...そうですか?
編集:上記の間違った理解
上記の参照カウントの概念を誤解していると思います...ロックを2回取得して1回だけ解放すると、参照カウントは1になり、ロックはまだ解放されていないことを意味するはずです。参照カウントされていない場合は、x 回取得でき、1 回のリリースで解放されます。