Nik*_*ski 31 android orientation onresume android-activity
当方向发生变化时,会调用生命周期的哪种方法?我的应用程序执行该onResume()方法或者可能重新加载整个活动,因为我已经设置了一个布尔值来检查它是否是第一次运行.onConfigurationChanged()当方向发生变化时,我已经开始阅读,这是真的吗?怎么办呢?
Sit*_*ten 38
有意思的......
Activity是start onResume(),默认情况下在XML中声明.
正如我从堆栈溢出的问题回答中发现的那样:
我猜测因为活动1在旋转时被隐藏,onRestoreInstanceState因为没有"视图"(即,它无法被查看/查看)而未被调用.此外,完全可以为纵向/横向设置2个完全不同的布局文件,这些文件可能具有不同的具有不同ID的UI元素.
因此,我想说如果你想使用Bundle onSaveInstanceState来保存你自己的数据,那么你需要在你的onCreate(在Activity 1中)添加额外的逻辑来处理你自己的数据(以及在那里有条件地执行它)onRestoreInstanceState).
特别是,您可以维护一个"最后已知"的方向字段,以便onCreate知道它需要处理您自己的数据,因为方向已经改变,而不是依赖于onRestoreInstanceState被调用.
小智 5
public class MainActivity extends AppCompatActivity {
private final static String TAG = "AppActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "onCreate(Bundle) called");
setContentView(R.layout.activity_main);
}
@Override
public void onStart() {
super.onStart();
Log.d(TAG, "onStart() called");
}
@Override
public void onPause() {
super.onPause();
Log.d(TAG, "onPause() called");
}
@Override
public void onResume() {
super.onResume();
Log.d(TAG, "onResume() called");
}
@Override
public void onStop() {
super.onStop();
Log.d(TAG, "onStop() called");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy() called");
}
Run Code Online (Sandbox Code Playgroud)
}
1) 尝试在您的手机和/或模拟器上运行您的应用程序,然后打开窗口顶部的 Logcat => 选择 Verbose。
2) 现在尝试更改屏幕方向(例如从纵向 => 横向模式)。
我希望这个替代方案能让您更深入地了解活动生命周期。
| 归档时间: |
|
| 查看次数: |
30449 次 |
| 最近记录: |