Android中的OnPause后OnCreate调用

时间:2012-09-26 16:27:27

标签: android

我正在开发一个应用程序,我在其中创建了三个活动

  • Main_Activity
  • Second_Activity
  • CustomView_Activity

以下是这些Activties所称的过程:

  • MainActivity调用Second_Activtiy,在Second_Activtiy的OnCreate中,我创建了CustomView_Activity的对象。
  • 在Main_Activity中我在LinearLayout上有一个按钮onClick调用Second_activity中的Second_Activity OnCreate我必须保持我的屏幕开启并声明按钮布局等其他内容。
  • 在CustomView_Activity中,我创建了canvas和onCanvas,我绘制了一个Rectangle。
  • 现在当我的Second_Activity在Main_Activity之后调用并在按下电源按钮时调用OnPause我的活动调用

    OnPause -> OnStop -> OnCreate -> OnResume -> OnRestart -> OnDestroy
    

    当我按下屏幕上的电源按钮OnResume -> onCreate -> OnRestart来电时。

由于一次又一次地调用OnCreate我的活动没有正确执行任务。

请有人帮忙吗?

2 个答案:

答案 0 :(得分:2)

当方向再次改变时,调用Oncreate。这就是为什么你的活动第一次没有正确运行的原因。

要修复此问题,您需要在宣布活动的清单文件中声明此内容:

android:configChanges="keyboardHidden|orientation" 

对于Android 3.0及以上版本

android:configChanges="orientation|screenSize|keyboardHidden"

当应用程序处于横向状态并且手机被锁定时,应用程序会重定向到纵向,因此再次调用onCreate。为了防止这种情况,请添加上述行。

答案 1 :(得分:1)

你永远不应该依赖你的任务堆栈来维护你需要的所有状态。相反,使用onSaveInstanceState()保存活动的状态,并让每个活动根据此状态或传递给它的意图来执行操作。通过这种方式设计您的活动流程,系统可以随意创建/销毁活动(通常基于内存需求),您的活动将能够从中断的地方开始。