什么Android事件只被调用一次,直到活动被销毁?

时间:2012-01-27 00:28:24

标签: android android-event

我正在寻找一个答案(但我可能会问错误的问题)

问题 - 任何事件只会在TOTAL被调用一次,直到活动被销毁?

我问,因为当我的用户将手机旋转到横向oncreate和onstart都被调用导致重新加载各种类型。

我正在寻找一个可以将行为放入其中的事件,只能运行1次(直到活动被杀死)

提前谢谢

4 个答案:

答案 0 :(得分:11)

如果它特定于Activity,只需检查onCreate事件中的savedInstanceState参数。如果它为null,则运行您的代码,否则,您的代码已经运行。

示例:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    if(savedInstanceState == null) {
        // Run your code
    }        
}
第一次运行onCreate时,

savedInstanceState将始终为null,之后将填充它。

答案 1 :(得分:1)

您没有真正指定您尝试使用它的内容,因此我无法保证这适合您的使用,但Application.onCreate仅被调用一次。

答案 2 :(得分:1)

如果您想在orientationchange上消除活动的重新创建,您可以在清单中监听配置更改。

    <activity
            android:name=".MyActivity"
            android:configChanges="orientation" >
    </activity>

然后你可以像这样覆盖onConfigurationChanged:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged( newConfig );

    LinearLayout main = (LinearLayout) findViewById( R.id.mainLayout );
    main.requestLayout();
}

重新创建布局,使其与新方向匹配,而无需重新创建整个活动。

答案 3 :(得分:0)

检查http://developer.android.com/guide/topics/resources/runtime-changes.html以处理配置更改并在它们之间维护大量数据...如果您需要在配置更改之间维护所需的只是设置,则可以使用onSavedInstanceState()和onRestoreInstanceState()回调和给定的包。