多少Android生命周期处理太多?

多少Android生命周期处理太多?,android,android-lifecycle,Android,Android Lifecycle,可以理解,这个问题有点主观,但我相信有一个具体的答案 我有一个非常小的活动,它只是在ListActivity中向用户显示一些数据。我使用的数据来自应用程序的SQLite数据库,我发现自己正在这样做 这是不是基本上不必要的代码?我希望处理生命周期,以便在MainActivity不在顶部时使用最少的资源,但同时,整个活动可以在onCreate()中完成,如果您在使用dbHelper时只打开和关闭它,您可能不会覆盖onPause方法。打开助手(并假设SQLiteOpenHelper)并不是那么密集,所

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

我有一个非常小的活动,它只是在ListActivity中向用户显示一些数据。我使用的数据来自应用程序的SQLite数据库,我发现自己正在这样做


这是不是基本上不必要的代码?我希望处理生命周期,以便在MainActivity不在顶部时使用最少的资源,但同时,整个活动可以在
onCreate()

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

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

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


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

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

打开和关闭数据库确实需要时间,您应该在单独的线程中完成。本讲座和PDF中的更多详细信息:

因此,您需要编写更多的代码:P

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 */ }