1

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

  • 主要活动
  • Second_Activity
  • CustomView_Activity

以下是这些 Activties 调用的过程:

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

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

    当我按下电源按钮在屏幕上OnResume -> onCreate -> OnRestart通话时。

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

请问谁能帮忙??

4

2 回答 2

2

当方向再次改变时 Oncreate 被调用。这就是为什么您的活动在第一次之后没有正常运行的原因。

要解决此问题,您已在声明活动的清单文件中声明此问题:

android:configChanges="keyboardHidden|orientation" 

安卓3.0及以上

android:configChanges="orientation|screenSize|keyboardHidden"

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

于 2012-11-26T05:55:17.000 回答
1

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

于 2012-09-26T18:34:20.390 回答