java-在android中关于onCreate方法新参数问题

问题描述

在android中关于onCreate方法新参数问题

android中onCreate方法新参数(persistableBundle persistentState)是让Activity拥有持久化能力,如何理解这个持久化能力呢?

解决方案

一般我们会搭配两个方法来使用:
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)
public void onRestoreInstanceState(Bundle savedInstanceState, PersistableBundle persistentState)
前一个方法会在下述情形中被调用:
点击home键回到主页或长按后选择运行其他程序
按下电源键关闭屏幕
启动新的Activity
横竖屏切换时,肯定会执行,因为横竖屏切换的时候会先销毁Act,然后再重新创建 重要原则:当系统"未经你许可"时销毁了你的activity,则onSaveInstanceState会被系统调用, 这是系统的责任,因为它必须要提供一个机会让你保存你的数据(你可以保存也可以不保存)。
而后一个方法,和onCreate同样可以从取出前者保存的数据: 一般是在onStart()和onResume()之间执行! 之所以有两个可以获取到保存数据的方法,是为了避免Act跳转而没有关闭, 然后不走onCreate()方法,而你又想取出保存数据~

说回这个Activity拥有了持久化的能力,增加的这个PersistableBundle参数令这些方法 拥有了系统关机后重启的数据恢复能力!!而且不影响我们其他的序列化操作, 具体怎么实现的,暂时还不了解,可能是另外弄了个文件保存吧~!另外,API版本需要>=21,就是要5.0以上的版本才有效~

解决方案二:

Android:Activity中onCreate方法的参数及用途
Android:Activity中onCreate方法的参数及用途
Android:Activity中onCreate方法的参数及用途

时间: 2024-12-22 00:55:02

java-在android中关于onCreate方法新参数问题的相关文章

理解Android中Activity的方法回调_Android

为什么需要方法回调? 方法回调是功能定义和功能分离的一种手段,是一种松耦合的设计思想.在JAVA中回调是通过接口来实现的.作为一种系统架构,必须要有自己的运行环境,并且要提供用户的实现接口. 下面通过实例来模拟一下Android中Activity的方法回调思想.Activity接口 复制代码 代码如下: package com.xujing.test  //定义接口  public interface Activity{      //创建时调用的方法      public void onCr

理解Android中Activity的方法回调

为什么需要方法回调? 方法回调是功能定义和功能分离的一种手段,是一种松耦合的设计思想.在JAVA中回调是通过接口来实现的.作为一种系统架构,必须要有自己的运行环境,并且要提供用户的实现接口. 下面通过实例来模拟一下Android中Activity的方法回调思想. Activity接口 复制代码 代码如下: package com.xujing.test  //定义接口  public interface Activity{      //创建时调用的方法      public void onC

Android 中 onSaveInstanceState()使用方法详解

Android 中 onSaveInstanceState()使用方法详解 覆盖onSaveInstanceState方法,并在onCreate中检测savedInstanceState和获取保存的值 @Override protected void onSaveInstanceState(Bundle outState) { outState.putInt("currentposition", videoView.getCurrentPosition()); super.onSave

android中Bundle作为方法参数的数据类型声明时的问题

问题描述 android中Bundle作为方法参数的数据类型声明时的问题 那么Bundle的数据类型是什么,是属于String类吗,归根结底是二进制数据101010101吗 解决方案 Bundle内部就是一个map,可以存储任何对象,key是String类型 解决方案二: ArrayMap mMap = null; 解决方案三: ArrayMap<String, Object> mMap = null; 解决方案四: 本质上所有的数据在计算机里都是二进制数据. 最简单的,一个整数,比如1,就是

Java和JavaScript中使用Json方法大全

[本文转载于 Java和JavaScript中使用Json方法大全 ] 摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C.C++.C#.Java.JavaScript.Perl.Python等).这些特性使JSON成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成(网络传输速率). 一.准备工作      

java 接口-java重写框架中的某个方法

问题描述 java重写框架中的某个方法 有个框架的接口-当然也有框架的方法实现它的所有方法-我在开发过程中-用了实例化了该接口中的类-我现在想重新写框架中方法-必须要写个接口-这个接口继承框架的接口-写个方法来实现这个接口-问题来了-我只重写一个方法-但是现在必须重写所有的方法-得重写500个呢-怎么办-有没有好的办法-我只想重写框架中的某个方法,没有币,谢谢. 解决方案 重写方法不就方法名一样其他某些条件不一样就可以了吗 解决方案二: 1.接口继承后,实现类也继承,只是重写你要的方法 比如 框

java,android中intent对象和bundle对象有和区别?

问题描述 java,android中intent对象和bundle对象有和区别? android中intent对象和bundle对象有和区别?这两个对象都存在吗?有什么用的,传递数据吗还是怎么 的 解决方案 intent内部就是用bundle存储的 解决方案二: http://m.blog.csdn.net/blog/na604365019/8042977 解决方案三: android 中bundle对象

浅谈Java的String中的subString()方法_java

方法如下: public String substring(int beginIndex, int endIndex) 第一个int为开始的索引,对应String数字中的开始位置, 第二个是截止的索引位置,对应String中的结束位置 1.取得的字符串长度为:endIndex - beginIndex; 2.从beginIndex开始取,到endIndex结束,从0开始数,其中不包括endIndex位置的字符 如: "hamburger".substring(4, 8) returns

Android 中LayoutInflater.inflate()方法的介绍

Android 中LayoutInflater.inflate()方法的介绍 最近一直想弄明白LayoutInflater对象的inflate方法的用法,今天做了实例. <LinearLayout android:id="@+id/ll_item_Group" android:layout_width="match_parent" android:layout_height="200dp" android:background="