OnPause(),OnResume()和OnDestroy

时间:2012-04-27 16:24:50

标签: android optimization

我开发了一个小应用程序,它使用几个不同的类来允许用户添加,删除和查看某些数据。我使用arrayList来存储条目,它有自己的类,它有链接到数组的方法,所以我可以从我的所有类访问数组。

我想介绍上面的方法来优化我的代码,并想知道我是否可以将它们粘贴在一个类中,希望我的数组中有相同的应用程序类,并且只是定义它们将被使用的位置,这将节省我必须在几个类中编写相同的代码,这可能吗?

由于

4 个答案:

答案 0 :(得分:12)

Android调用onPauseonResumeonDestroy时的示例。

<强>的onPause()

当用户收到呼叫或短信等事件时,会调用

OnPause(),当onPause()被调用时,Activity可能部分或完全隐藏。

您可能希望在onPause中保存用户数据,以防他点击后退按钮而不明确保存数据。

<强>的onResume()

当用户恢复他之前离开的OnResume()时,会调用

Activity,说他按下主页按钮然后返回应用程序,onResume()被调用。

您可以在onResume

中执行此处或此类网络相关更新

<强>的OnDestroy()

系统或用户销毁OnDestroy时会调用

Activity,比如回击,直到应用退出。

您必须保存要在onDestroy()中保留的所有用户数据,因为系统不会为您执行此操作。

话虽如此,我必须告诉你,你不能在onPause()和onDestroy()中调用任何用户定义的方法,因为它们在某些情况下被调用,除了我上面指定的操作之外不打算做任何操作

当活动开始时,会调用onCreate()来设置您的屏幕,然后是onResume(),但是您可以使用onResume来执行您想要的操作,但强烈建议您创建另一个类来进行这样的操作,有时可能是数据密集。最后,在onCreate()中的onResume()Activity方法中调用您在另一个类中创建的方法。

答案 1 :(得分:2)

不确定这是否是您要找的,但请尝试单例模式。这将允许从任何活动访问您的类对象。即。 MyObject对象= Singleton.getInstance();

答案 2 :(得分:2)

最好是包含覆盖方法代码的基本活动,然后您可以将其扩展为活动而不是活动。

因此,所有扩展基本活动的活动都将通过三种方法反映出来。

public class BaseActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
    }
   @Override
protected void onPause(){
    super.onPause();

}
@Override
protected void onResume(){
    super.onResume();

}
@Override
protected void onDestroy(){
    super.onDestroy();

}

}

注意您想在上述三种方法中执行哪项任务?如果它们在所有活动中都相同,那么只能使用上述内容。

答案 3 :(得分:0)

你可以创建一个BaseActivity类 它扩展了Activity,覆盖了你想要覆盖的方法,而不是在所有其他活动上扩展Activity,而是扩展BaseActivity。