Android onCreate /onSaveInstanceState 方法重载和解析

在Activity 中,我们通常都是在:

 

protected void onCreate(Bundle savedInstanceState) {}
 方法中加载activity的布局和初始化控件以及状态

如果一不小心 写成了:

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

然后去加载布局,会导致setContentView失效和一些不可控的问题

那么 这个onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState)方法是干嘛的呢?

 

这个其实是针对  onCreate(Bundle savedInstanceState) 的方法进行了一次扩展

 当我们的Activity屏幕旋转或者按下home以后,有几率触发我们的 

@Override
protected void onSaveInstanceState(@NonNull Bundle outState) {} 方法

在这个方法里 我们可以保存我们的一些数据 比如id  textView / Edittext 的值

然后onCreate中的 savedInstanceState 如果不为空 就可以取出这些数据

 

那么 :

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

 

和 

@Override
public void onSaveInstanceState(@NonNull Bundle outState, @NonNull PersistableBundle outPersistentState) {

}

 

是配套使用的

他们针对 onCreate (Bundle  save) 这个方法进行了扩展和持久化

 

PersistableBundle:

 

 

他实现了

Cloneable 以及 序列化 
Parcelable的接口,目的就是讲数据持久化存储

当我们的activity 正在运行,当电量耗尽 关机 重启时 会调用这两个方法

 

需要在我们Manifest中的Activity节点 配置  android:persistableMode="persistAcrossReboots"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中,服务是一种可以在后台运行的组件,它可以在不与用户进行交互的情况下执行长时间运行的任务。服务可以在应用程序组件和后台进程之间传递数据和信息。 在 Android 中,服务的生命周期方法包括 `onCreate()` 和 `onStartCommand()`。 `onCreate()` 方法是服务的第一个方法,它在服务被创建时调用,该方法只会被调用一次。在 `onCreate()` 方法中,你可以执行一些初始化代码,例如创建数据库连接或注册广播接收器等。 `onStartCommand()` 方法是服务的第二个方法,它在服务被启动时调用。在 `onStartCommand()` 方法中,你可以执行服务的主要逻辑。该方法返回一个整数值,表示服务启动类型。返回值有以下三种类型: - `START_STICKY`:如果服务被杀死,系统会尝试重新创建服务,并且调用 `onStartCommand()` 方法,但不会重新传递最后一个 Intent。此时,服务会执行 `onCreate()` 和 `onStartCommand()` 方法。 - `START_NOT_STICKY`:如果服务被杀死,系统不会重新创建服务,除非有一个新的 Intent 调用了 `startService()` 方法。此时,服务会执行 `onCreate()` 和 `onStartCommand()` 方法。 - `START_REDELIVER_INTENT`:如果服务被杀死,系统会重新创建服务,并重新传递最后一个 Intent 给 `onStartCommand()` 方法。此时,服务会执行 `onCreate()` 和 `onStartCommand()` 方法。 总结来说,`onCreate()` 方法在服务创建时调用,用于执行初始化代码;`onStartCommand()` 方法在服务启动时调用,用于执行服务的主要逻辑,并返回一个整数值表示服务启动类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值