2017-01-22 69 views
0

我有一個活動,我想要監視電池壽命。我想將電池壽命分解成它自己的類。我可以做的活動Android自定義類 - 掛鉤到活動生命週期

onPause() { 
    batteryChecker = new BatteryChecker(); 
} 
onResume() { 
    batteryChecker.kill(); 
} 

我寧願只是這樣做如下:

onCreate() { 
    bg = new BatteryChecker(this); 
} 

有什麼辦法,我可以得到BatteryChecker向附加活動的onPause /的onResume應對?

+0

是的 - 你的第一個例子。沒有全局的onPause/onResume框架。這是一件好事,因爲很難讓它適用於多種活動和服務。 –

+0

但是沒有辦法'鉤入'這些回調? – easycheese

+0

沒有。你可以用事件總線或可觀察的或類似的東西來構建一個。但建立起來會很痛苦,而處理多項活動可能會有挑戰性。 –

回答

0

你需要一個類繼承的BroadcastReceiver

public class PowerConnectionReceiver extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1); 
      boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || 
           status == BatteryManager.BATTERY_STATUS_FULL; 

      int chargePlug = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); 
      boolean usbCharge = chargePlug == BATTERY_PLUGGED_USB; 
      boolean acCharge = chargePlug == BATTERY_PLUGGED_AC; 
     } 
    } 

更多信息。 Monitoring Battery State

+2

我知道使用BroadcastReceiver來監視電池,謝謝。問題是關於活動生命週期掛鉤。 – easycheese

2

BatteryChecker可以實現ActivityLifecycleCallbacks並調用registerActivityLifecycleCallbacksonCreate當您創建Application類,在這種情況下,您的自定義類將接收所有的活動生命週期回調。

查看更多這裏 - ActivityLifecycleCallbacks

+0

是的,我認爲ActivityLifecycleCallbacks是我需要的,但是在Application類中調用registerActivityLifecycleCallbacks並沒有幫助。我沒有辦法爲BatteryChecker類註冊它。 – easycheese