2011-03-22 59 views
6

可以理解這個問題有點主觀,但我相信有一個具體的答案。Android生命週期處理過多了多少?

我有一個非常小的活動,只是在ListActivity中向用戶顯示一些數據。我使用的數據來自應用程序的SQLite數據庫,我發現自己做這個

public class MainActivity extends ListActivity{ 
    private DatabaseAdapter dbHelper; 
    @Override 
    public void onCreate(Bundle b){ 
      dbHelper = new DatabaseAdapter(this); 
      super.onCreate(b); 
    } 

    @Override 
    public void onResume(){ 
      dbHelper.open(); 
      fill_data();//a small method that uses dbHelper to setListAdapter 
      super.onResume(); 
     } 

    @Override 
    public void onPause(){ 
      dbHelper.close(); 
      super.onPause(); 
    } 

    private void fill_data(){/*makes use of dbHelper */ } 

這只是代碼大可不必?我希望處理生命週期,以便在MainActivity不在最前面時使用最少量的資源,但同時,整個活動可以在onCreate()中完成。

回答

5

如果您只是在使用dbHelper時纔打開並關閉dbHelper,那麼您可能不會重寫onPause方法。打開幫助程序並不是那麼緊密(我假設SQLiteOpenHelper),所以你可能會認爲它是不成熟的優化。

無論如何,你幾乎總是需要重寫onCreate,經常重寫onResume,有時會覆蓋onPause。什麼是重要的是當框架調用各種回調以及你必須在其中做什麼。

如果您需要在Activity處於前景時執行某些操作,或者您希望在Activity的Looper中執行某些操作(例如位置更新),則必須重寫onResume。如果您需要自行清理,則必須實施onPause。

我通常不會執行onDestroy,因爲它不保證被調用。

0

當您需要數據庫時,實際打開和關閉實際上可能會更好。雖然它不影響你的情況,但有些手機(三星Galaxy S)可能有非常慢的數據庫,並打開多個連接(例如在一個活動和服務),真的放慢了速度...(我看到了1s寫入時間!!)