Android Activity 中 onCreate 方法第二个实现有啥用?

Posted

技术标签:

【中文标题】Android Activity 中 onCreate 方法第二个实现有啥用?【英文标题】:What is the usage of onCreate method second implementation in Android Activities?Android Activity 中 onCreate 方法第二个实现有什么用? 【发布时间】:2017-03-18 09:20:17 【问题描述】:

我一直在我的Activity 生命周期中使用onCreate 方法来启动或从保存状态恢复,但最近发现还有另一个包含PersistableBundle 的onCreate 方法:

@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) 
    super.onCreate(savedInstanceState, persistentState);


我发现它是从android 21开始添加的。

谁能提供有关此方法的完整信息,何时调用和用法?

【问题讨论】:

when i click on button to showing next activity it shows only white screen 的可能重复项,您可以在这里尝试答案 我已经研究过这个文档,但很遗憾我没有明白这一点:developer.android.com/reference/android/… 重点是你可以通过将东西放在一个特殊的包中来保存设备重启之间的活动状态。 那为什么我们需要实现另一种方法呢?为什么android重启后也不使用保存状态? 【参考方案1】:

据我所知,如果您在清单中的 Activity 上设置一个属性,如下所示:

<activity 
   android:name=".MainActivity"
   android:persistableMode="persistAcrossReboots"
</activity>

然后您可以使用PersistableBundle 在系统关闭和重新启动后恢复数据。换句话说,只要应用程序处于活动状态,普通的 Bundle 对象就会记录您的savedInstanceState。您可以使用PersistableBundle 在系统关闭时保存数据。

您也可以使用persistNeverpersistRootOnly 代替persistAcrossReboots

您可以在此处找到有关文档的更多信息:https://developer.android.com/reference/android/R.attr.html#persistableMode

【讨论】:

以上是关于Android Activity 中 onCreate 方法第二个实现有啥用?的主要内容,如果未能解决你的问题,请参考以下文章

eclipse Android 开发基础 Activity 窗体 界面

如何计算 App 的启动时间

Android在 普通类(非Activity,多数为Adapter) 中 传输数据为空值 解决方法 :在startActivity 用 intent传输数据

代理模式创建Activity

为啥活动通过 onCreate 而不是 onRestart 回到前面?

如何获取和设置文本android? [关闭]