dar*_*kok 6 lifecycle android android-activity
我对Android生命周期非常了解.我在这里发帖是因为我观察到了一种奇怪的行为,无论如何这是我自己的想法.
我的情况是这样的:一个活动将只使用一个简单的布局EditText.在活动onCreate的方法,我设置一些默认的文本到EditText,并在方法的后面部分,分配TextWatcher到EditText任何东西所以每当用户类型,我可以回应我自己的方式.
在我旋转屏幕之前一切都还好.该TextWatcher回调开始针对初始化代码反应EditText.
根据正常的代码流程,TextWatcher在初始化文本值之后分配EditText.所以它不应该因为方法中的文本赋值而触发onCreate.
这里有人能解释一下吗?
这就是你看到这种行为的原因:
Bundle savedInstanceState参数为null.savedInstanceState参数中的非空值.onCreate返回Android调用onRestoreInstateState.id正在尝试恢复其状态的视图也会EditText恢复其状态(实际上,恢复其TextView大部分的状态).onCreate方法完成后),您的EditText控件会调用setText自己以恢复配置更改之前的文本.TextWatcher内容将onCreate通知此更改.为了清楚说明,您在第一次调用时添加的旧 TextWatcher onCreate不会被保留!它的新 TextWatcher,在最后一次调用时添加onCreate,它接收文本更改通知.
您可以自己检查TextView.onRestoreInstanceState.
当您旋转设备时,活动的 onCreate 方法会再次调用。如果您想防止在旋转设备时调用 onCreate,请在清单中执行以下代码
android:configChanges="orientation|keyboardHidden"
Run Code Online (Sandbox Code Playgroud)
并且在你的活动中
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE)
{
}
else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT)
{
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2273 次 |
| 最近记录: |