【问题标题】:OnPause(), OnResume() and OnDestroyOnPause()、OnResume() 和 OnDestroy
【发布时间】:2012-05-08 10:10:48
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 你是什么意思,“我有我的数组,在那里定义它们将被使用的地方”?每个类都可以并且应该覆盖所有这三个方法。
  • 以上三种方法你要执行什么任务?它们在所有活动中都相同
  • 我有几个活动,即添加、删除和查看所有我想使用这些方法的活动。

标签: android optimization


【解决方案1】:

Android 调用onPauseonResumeonDestroy 时的示例。

OnPause()

OnPause() 在用户收到电话或短信等事件时被调用,当onPause() 被调用时,Activity 可能会部分或完全隐藏。

您可能希望将用户数据保存在 onPause 中,以防他在未明确保存数据的情况下点击返回按钮。

OnResume()

OnResume() 在用户恢复他不久前离开的Activity 时被调用,比如他按下主页按钮然后返回应用程序,onResume() 被调用。

您可以在此处进行与网络相关的更新,或在onResume 中进行任何此类更新。

OnDestroy()

Activity 被系统或用户销毁时调用OnDestroy,例如通过回击,直到应用退出。

您必须将任何您想保留在onDestroy() 中的用户数据保存下来,因为系统不会为您执行此操作。

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

当 Activity 开始时,onCreate() 被调用来设置你的屏幕,然后是onResume(),但是你可以使用onResume 来做你想做的事情,但是强烈建议你创建另一个类来继续此类操作有时可能是数据密集型的。最后在Activity 中的onCreate()onResume() 方法中调用您在另一个类中创建的那些方法。

【讨论】:

    【解决方案2】:

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

    所以所有扩展baseactivity的activity都会用三种方法来体现。

    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 个活动允许用户添加、删除和查看数据,我希望这 3 个都可以使用它们
    • 所以我可以创建它并在我的其他类中调用它,我还可以参考各个布局吗?
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多