2011-03-22 4 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가 위에 있지 않을 때 최소한의 리소스를 사용할 수 있도록 lifecycles를 처리하고 싶지만 동시에이 전체 활동은 onCreate()에서 수행 할 수 있습니다.

답변

5

사용할 때마다 dbHelper를 열고 닫으면 onPause 메서드를 재정의하지 않을 수도 있습니다. 도우미를 여는 것은 그다지 집중적이지는 않습니다 (SQLiteOpenHelper라고 가정하고 있습니다). 그래서 조숙 한 최적화라고 생각할 수도 있습니다.

어쨌든 onCreate를 재정의해야하며 onResume을 종종 무시하고 onPause를 무시해야 할 필요가 거의 항상 있습니다. 중요한 것은 프레임 워크가 다양한 콜백을 호출하고 그 콜백을 수행해야 할 때입니다.

액티비티가 포어 그라운드에 부딪 힐 때 뭔가를해야하거나 액티비티 루퍼 (예 : 위치 업데이트)에서 무언가를하고 싶다면 onResume을 오버라이드해야합니다. 너 자신 후에 정리가 필요하면 onPause를 구현해야한다.

일반적으로 onDestroy는 호출 할 수 없으므로 구현하지 않습니다.

0

실제로 데이터베이스를 필요로 할 때 열거 나 닫는 것이 좋습니다. 비록 당신의 케이스에 영향을 미치지는 않지만, 일부 휴대폰 (삼성 갤럭시 S)은 매우 느린 데이터베이스를 가질 수 있으며 여러 연결을 열어서 (예 : 활동 및 서비스에서) 물건을 느리게합니다 ... (1 초를 쓴 시간을 보았습니다 !!)