Andorid生命周期实践

来源:互联网 发布:语音输入翻译软件 编辑:程序博客网 时间:2024/06/08 02:51

还记得在网上关于生命周期面试题吗,是这样说的

2. 横竖屏切换时候 activity 的生命周期

1. 不设置 Activity 的 android:configChanges 时 , 切屏会重新调用各个生命周期 , 切横屏时会执行一次 , 切竖屏时会执行两次 . 

2. 设置 Activity 的 android:configChanges="orientation" 时 , 切屏还是会重新调用各个生命周期 , 切横、竖屏时只会执行一次 . 

3. 设置 Activity 的 android:configChanges="orientation|keyboardHidden" 时 , 切屏不会重新调用各个生命周期 , 只会执行onConfigurationChanged 方法 .

实际操作下来,发现不管设置不设置android:configChanges ,生命周期都一样。。。晕

package com.jc.myandroidlifecycle;import android.app.Activity;import android.os.Bundle;import android.util.Log;public class MainActivity extends Activity {    private static final String TAG = "MainActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Log.i(TAG, "onCreate");    }    @Override    protected void onStart() {        super.onStart();        Log.i(TAG, "onStart");    }    @Override    protected void onResume() {        super.onResume();        Log.i(TAG, "onResume");    }    @Override    protected void onStop() {        super.onStop();        Log.i(TAG, "onStop");    }    @Override    protected void onDestroy() {        super.onDestroy();        Log.i(TAG, "onDestroy");    }    @Override    protected void onRestart() {        super.onRestart();        Log.i(TAG, "onRestart");    }    @Override    protected void onPause() {        super.onPause();        Log.i(TAG, "onPause");    }}

最后两个onPause跟onStop也是自动黑屏的状态,我在清单文件里按照上面说的那样设置了onfigchanges的属性,发现都一样。。。是我没理解上面的话还是怎么的


#########################################下面是跟第二个页面跳转相关的生命周期###############################

package com.jc.myandroidlifecycle;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;public class SecondActivity extends AppCompatActivity {    private static final String TAG = "lifecycle";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_second);        Log.i(TAG, "2onCreate");    }    @Override    protected void onStart() {        super.onStart();        Log.i(TAG, "2onStart");    }    @Override    protected void onResume() {        super.onResume();        Log.i(TAG, "2onResume");    }    @Override    protected void onStop() {        super.onStop();        Log.i(TAG, "2onStop");    }    @Override    protected void onDestroy() {        super.onDestroy();        Log.i(TAG, "2onDestroy");    }    @Override    protected void onRestart() {        super.onRestart();        Log.i(TAG, "2onRestart");    }    @Override    protected void onPause() {        super.onPause();        Log.i(TAG, "2onPause");    }}
为了区分,第一个与第二个,我设置了同样的TAG,为LifeCycle,并给第二个页面的生命周期加了个222222....


#########################################下面把第二个页面设置成半透明那种的###############################


<activity android:name=".SecondActivity"          android:theme="@android:style/Theme.Dialog"></activity>

0 0
原创粉丝点击