2017-01-22 11 views
0

У меня есть активность, в которой я хочу контролировать время работы от батареи. Я хочу разделить время автономной работы на собственный класс. Я мог бы сделать следующее в деятельностиAndroid custom class - Hook to Activity Lifecycle

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 и вызвать registerActivityLifecycleCallbacks в onCreate при создании Application класса, в этом случае пользовательского класс будет получать все жизненный цикл активности обратных вызовов.

Подробнее см. Здесь - ActivityLifecycleCallbacks

+0

Да, я решил, что ActivityLifecycleCallbacks - это то, что мне нужно, но вызов registerActivityLifecycleCallbacks в классе Application не помогает. Я не вижу способа зарегистрировать его для класса BatteryChecker. – easycheese