2017-01-22 4 views
0

Ich habe eine Aktivität, in der ich die Akkulaufzeit überwachen möchte. Ich möchte die Akkulaufzeit in eine eigene Klasse entkoppeln. Ich kannAndroid benutzerdefinierte Klasse - Hook in Activity Lifecycle

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

die folgend in der Tätigkeit tun Ich würde es vorziehen, nur dies zu tun:

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

Gibt es eine Möglichkeit ich BatteryChecker bekommen kann zur onPause/onResume der anhängenden Aktivität reagieren?

+0

Ja - Ihr erstes Beispiel. Es gibt kein globales onPause/onResume-Framework. Das ist eine gute Sache, weil es schwierig sein würde, mit mehreren Aktivitäten und Diensten zu arbeiten. –

+0

Aber es gibt keine Möglichkeit, diese Callbacks einzubinden? – easycheese

+0

Nein. Du könntest einen Eventbus mit Eventbus bauen oder beobachtbar oder so ähnlich. Es wäre jedoch ein Problem, sich einzurichten, und der Umgang mit mehreren Aktivitäten könnte eine Herausforderung darstellen. –

Antwort

0

Sie eine Klasse müssen sich 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; 
     } 
    } 

weitere Informationen. Monitoring Battery State

+2

Ich bin mir bewusst, einen BroadcastReceiver zu verwenden, um die Batterie zu überwachen, danke. Die Frage bezieht sich jedoch auf Aktivitäten-Lebenszyklus-Hooks. – easycheese

2

Ihre BatteryChecker kann ActivityLifecycleCallbacks implementieren und registerActivityLifecycleCallbacks in onCreate rufen, wenn Sie Ihre Application Klasse erstellen, in diesem Fall Ihre benutzerdefinierte Klasse alle Activity Lifecycle Rückrufe erhalten.

sehen Sie mehr hier - ActivityLifecycleCallbacks

+0

Ja, ich dachte, dass ActivityLifecycleCallbacks das sind, was ich brauche, aber das Aufrufen von registerActivityLifecycleCallbacks in der Application-Klasse ist nicht hilfreich. Ich sehe keine Möglichkeit, es für die BatteryChecker-Klasse zu registrieren. – easycheese

Verwandte Themen