2013-03-21 65 views
0

我正在構建一個Android信息亭應用程序,該應用程序將爲小型客戶端作業提供24/7全天候運行,播放視頻。不過,我發現在某些時候,電源可能會關閉,這意味着平板電腦在電源關閉時需要停止運行應用程序(或至少移除屏幕保持活動狀態),並在電源關閉時重新設置所有設置電源重新打開,因此不會完全關閉設備。我之前做過一些Android工作,但沒有像這樣。鑑於我只有一個活動,並且當我的廣播接收器(我已在我的Manifest文件中註冊)接收到的狀態接收到我的onReceive呼叫時,活動將會運行對我來說,最佳實踐/最習慣的方式是什麼將改變的狀態傳達給我的活動?通知我主要從BroadcastReceiver中更改電源狀態的活動

我看過的當前方法涉及對活動的靜態引用在活動中公開可用並使用它與活動進行通信(根據應用程序的生命週期將其適當地設置爲self或null)。這是最有效的方法嗎?

+0

你爲什麼不在你的活動中註冊權力? – 2013-03-21 23:41:36

回答

0

最簡單的方法是創建Observer/Observable模式,其中BroadcastReceiver實現Observable,並通知所有相關方有關更改。對功率變化感興趣的活動(或其他課程)可以註冊爲Observer,並在出現問題時通過其update()函數進行調用。

只是不要忘記從Observer取消註冊onPause(),所以你的死亡活動不會被調用。

0

@Hoan Nguyen是對的。您的活動可以註冊電池事件。這裏有一個例子:

public class Test extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     final TextView text = new TextView(this); 
     setContentView(text); 
     registerReceiver(new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context context, Intent intent) { 
       int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1); 
       boolean charging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL; 
       text.setText(charging ? "Charging" : "On battery"); 
      } 
     }, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
    } 
} 

@lenik大概也是正確的,你應該在的onResume()註冊/註銷/的onPause(),而不是的onCreate(),但上面的應該讓你開始。