可以理解这个问题有点主观,但我相信有一个具体的答案。
我有一个非常小的活动,只是在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()
中完成。
答案 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