Android生命周期处理多少钱?

时间:2011-03-22 21:26:39

标签: android android-lifecycle

可以理解这个问题有点主观,但我相信有一个具体的答案。

我有一个非常小的活动,只是在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()中完成。

3 个答案:

答案 0 :(得分:5)

如果您只是在使用它时打开和关闭dbHelper,那么您可能无法覆盖onPause方法。打开帮助器并不是那么密集(我假设SQLiteOpenHelper),所以你可能会认为它过早优化。

无论如何,你几乎总是需要覆盖onCreate,经常覆盖onResume,有时候覆盖onPause。重要的是当框架调用各种回调以及你必须在其中执行的操作时。

如果您需要在Activity活动到达前台时执行某些操作,或者如果您想在Activity的Looper中执行某些操作(例如,位置更新),则必须覆盖onResume。如果您需要自己清理,则必须实施onPause。

我通常不会实现onDestroy,因为不能保证它被调用。

答案 1 :(得分:0)

当您需要数据库时,实际上可能更好地打开和关闭。虽然它不会影响你的情况,但有些手机(三星Galaxy S)可能拥有非常慢的数据库并且打开多个连接(例如在活动和服务中)确实减慢了速度......(我看到1s写入时间!!)

答案 2 :(得分:0)

打开和关闭数据库确实需要时间,您应该在单独的线程中执行此操作。本讲座和PDF中的更多细节:http://www.google.com/events/io/2010/sessions/writing-zippy-android-apps.html

所以你需要编写更多代码。 :P