私のアプリでは、光センサーと近接センサーを使用して携帯電話のポケット機能を検出し、検出が完了したら SensorManager の登録を解除しています。しかし、アプリによる CPU 使用率が 1 ~ 2 秒しか表示されない場合でも、バッテリーの使用率は常にアプリに no と表示されます。心配なリストの 1 つのアプリ。
SensorManager.unRegisterListener を使用し、SensorManager = null も設定しましたが、状況は同じままです。
いくつかのバグが原因で、センサーが正しく登録解除されていないことを読みました。センサーを正しく処分する良い方法はありますか?
ガイドをお願いします。オムカル・ガイサス
アプリのコード サンプルで更新 -
@Override
protected void onPause()
{
super.onPause();
unHookReceiver();
}
private void unHookReceiver()
{
if (r != null)
{
unregisterReceiver(r);
if(GetProximityPreference("EnableReceiveByProximity"))
{
mySensorManager.unregisterListener(proximitySensorEventListener);
mySensorManager.unregisterListener(lightSensorEventListener);
mySensorManager = null;
FileUtils.appendLog(FileUtils.GetCurrentDateTime() + " Power Consumption Log End");
FileUtils.appendLog("------------------------------------------------");
}
r = null;
}
}
また、stackpverflow に関する 1 つの投稿からの 1 つの提案に従って、sensorManager = null を設定していますが、それでも役に立ちません。クリーンアップ コードを呼び出したにもかかわらず、バッテリーの使用量は依然として非常に高くなっています。アプリ自体は、1 つのブロードキャスト レシーバーと 1 つのアクティビティしかない非常にシンプルなアプリであるため、多くのバッテリーを使用するべきではありませんが、アクティビティ内で光センサーと近接センサーを呼び出すと、それらがバッテリー使用量の急増を引き起こしているのではないかと思います。理由はわかりませんが。
どんな助けも非常に高く評価されます。