android - 每次在 Activity 中获取 savedInstanceState null

标签 android android-fragments

谁能在下面的代码中解释我。为什么我会遇到这个问题?

发布视频链接:https://drive.google.com/file/d/16PzSn9zHhv-24hM5Vi_V-VQxtmA2PnSt/view?usp=sharing

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        if(savedInstanceState==null){
            Toast.makeText(this,"null",Toast.LENGTH_LONG).show()
        }else{
            Toast.makeText(this,"not null",Toast.LENGTH_LONG).show()
        }
    }

我创建了新的黑色项目并在我的 MainActiviy 中添加了上面的代码,然后我创建了 apk 并上传到驱动器上。

之后,我下载了该 apk 并启动应用程序,第一次出现“null”,之后我将该应用程序移至后台,然后再次从应用程序启动器图标打开该应用程序,我再次显示“null” "toast

在我强行关闭该应用程序并再次从启动器图标打开应用程序后,我再次得到“空” toast 我再次将该应用程序置于后台我已经从应用程序启动器图标打开该应用程序但是这次在创建时没有调用并且当我在应用程序从恢复状态重新启动后强行关闭应用程序时我没有从上面的代码中得到任何 toast 但是第一次当我从启动器图标下载并启动应用程序时应用程序启动器从声明。

当我直接从 android studio 安装应用程序时,不会发生上述问题。

如果我直接从 studio 安装应用程序,那么每次应用程序打开后只有第一次 null 显示从 onresume state(oncreate) 不调用。

谁能解释一下为什么会出现这个问题。

最佳答案

首先你应该阅读Android Activity Lifecycle ,你想要的是检测应用程序何时从后台转到前台,Android 实际上有 onResume() 方法。

如果您想保留数据,

SaveInstanceState 主要用于方向更改,因为当方向更改时,将再次创建 Activity 并调用 onCreate() .所以我们将数据保存在 InstanceState 中,并在 onCreate() 中获取数据以恢复状态。

关于android - 每次在 Activity 中获取 savedInstanceState null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59403718/

相关文章:

android - 下拉平移 Android fragment 转换

java - 无需 setRequestedOrientation 即可更改方向

android - 相机预览处于纵向模式,但拍摄的图像已旋转

java - 为整个应用设置静音/取消静音复选框

java - 将 progressBar 可见性设置为消失时应用程序崩溃

android - BroadcastReceiver 不会从 ActionBarDrawerToggle 触发

安卓闹钟从未收到

android - 对话框中的 setOnItemClickListener 不起作用

Android - 从 Fragments 动画 ActionBar 图标的问题

android - Android如何在ViewPager中处理 fragment 生命周期?