应用程序生命周期如何在应用程序启动时运行某些东西

时间:2010-03-27 03:42:33

标签: android

我有一个对话框弹出窗口,指示我希望活动运行多长时间。 看似简单,但很难确定活动何时真正开始。 如果用户在G1上打开键盘然后进入横向,则重新运行onCreate方法上的活动。

我不能为类创建静态甚至创建应用程序类,因为我无法确定“应用程序”何时消失。即使在销毁了唯一的活动之后,该应用程序显然还活着。

有没有办法确定是否因为键盘被扩展或调用横向模式而调用了onCreate?

由于

3 个答案:

答案 0 :(得分:3)

在onSaveInstanceState中,您可以存储一个标志,指示它是否已运行。如果应用程序正在恢复然后在onCreate(Bundle savedInstanceState)中,savedInstanceState将具有变量,因此您可以检查savedInstanceState!= null和saveInstanceState.get(“restoring”)!= null然后不显示对话框。< / p>

答案 1 :(得分:3)

我尝试创建一个应用程序子类,但我仍无法确定它什么时候会消失。

我尝试了另一种方法。 我在活动中添加了清单,

android:configChanges="orientation|keyboardHidden"

然后在我添加的活动中,

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

这会导致我的onCreate方法在方向改变或隐藏键盘时不被调用。我不确定为什么我的观点在任何一种情况下仍然看起来都很正确,但效果很好。实际上,它甚至可以处理显示在对话框中的文本。当方向改变时,文本会被保留。

答案 2 :(得分:0)

  

有没有办法确定   onCreate因为被称为   键盘被扩展或   是否引用了横向模式?

有一种方法可以:
1.检查键盘是否正在伸出 2.检查当前方向(横向或纵向)的方法

确定是否已调用onCreate()将需要您做一些工作。例如,您可以使用变量标记onCreate()的完成并将其保存在Activity的状态Bundle中。

您可以检查onCreate()以确定这是第一次运行还是由于配置更改而重新启动,方法是从1,2和标志中找出值。

这只是一个建议;可能存在更好的解决方案