Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么Android事件只调用一次,直到活动被销毁?_Android_Android Event - Fatal编程技术网

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

什么Android事件只调用一次,直到活动被销毁?,android,android-event,Android,Android Event,我在寻找一个单一的答案(但我可能问错了问题) 问题-在活动被销毁之前,是否有任何事件只调用一次总计 我这样问是因为当我的用户将手机旋转到横向时,oncreate和onstart都会被调用,从而导致重新加载 我正在寻找一个我可以将行为放入其中的事件,该事件只能运行1x(直到活动被终止) 提前感谢您您没有真正指定要使用它做什么,因此我不能保证它适合您的使用,但只调用一次。如果它是特定于活动的,请在onCreate事件中检查savedInstanceState参数。如果为空,则运行代码,否则,代码已运

我在寻找一个单一的答案(但我可能问错了问题)

问题-在活动被销毁之前,是否有任何事件只调用一次总计

我这样问是因为当我的用户将手机旋转到横向时,oncreate和onstart都会被调用,从而导致重新加载

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


提前感谢您

您没有真正指定要使用它做什么,因此我不能保证它适合您的使用,但只调用一次。

如果它是特定于活动的,请在onCreate事件中检查savedInstanceState参数。如果为空,则运行代码,否则,代码已运行

例如:

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

    if(savedInstanceState == null) {
        // Run your code
    }        
}

第一次运行onCreate时,savedInstanceState将始终为空,此后将填充它。

检查以处理配置更改并在它们之间维护大量数据…如果在配置更改之间只需要维护设置,则可以使用onSavedInstanceState()以及onRestoreInstanceState()回调和给定的bundle。

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

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

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

在横向切换期间重新加载“我的视图”时,为什么会调用此选项?我有一个在oncreate中调用http端点的事件,每次切换方向时它都会被命中Android会终止您的活动,并在方向发生更改时重新创建它们…您的主题和内容不同…您希望只为活动或应用程序调用一次方法…这是两种不同的方法事情…太棒了!这正是我要找的!不建议采用这种方法。例如,这是错误的-
android:configChanges
中需要的值比您拥有的要多,仅用于旋转事件。其次,它不能处理所有配置更改。有几个地方,
android:configChanges
是一个合理的答案,但没有那么多,考虑到动态片段和
setRetainInstance(true)
等东西的出现,答案就更少了。
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged( newConfig );

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