Android 2.2 API Demos -- PersistentState(Activity)

2024-03-25 02:18

本文主要是介绍Android 2.2 API Demos -- PersistentState(Activity),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先看API Demo中的示例,PersistentState Activity。

1. 在PersistentState Activity运行窗口的第一个文本框中追加输入"It will be saved.",在第二个文本框中输入"It will be lost."并且光标选择"be saved."。

2. 点击back按钮或者以其它方式退出这个界面。

3. 当再次进入这个界面时发现,在第一个文本框中添加的文字和对文字的选择没有改变,而第二个文本框中新输入的文字消失了。

从上面的示例可以看出当我们离开这个Activity之后,有些信息被保存了。当我们回到这个Activity时,被保存的信息能再次加载进来。

从代码中可以看出,

Java代码

package com.example.android.apis.app;import com.example.android.apis.R;import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.EditText;
import android.widget.TextView;public class PersistentState extends Activity
{@Overrideprotected void onCreate(Bundle savedInstanceState) {// Be sure to call the super class.super.onCreate(savedInstanceState);setContentView(R.layout.save_restore_state);// Set message to be appropriate for this screen.((TextView)findViewById(R.id.msg)).setText(R.string.persistent_msg);// Retrieve the EditText widget whose state we will save.mSaved = (EditText)findViewById(R.id.saved);}@Overrideprotected void onResume() {super.onResume();SharedPreferences prefs = getPreferences(0); String restoredText = prefs.getString("text", null);if (restoredText != null) {mSaved.setText(restoredText, TextView.BufferType.EDITABLE);int selectionStart = prefs.getInt("selection-start", -1);int selectionEnd = prefs.getInt("selection-end", -1);if (selectionStart != -1 && selectionEnd != -1) {mSaved.setSelection(selectionStart, selectionEnd);}}}@Overrideprotected void onPause() {super.onPause();SharedPreferences.Editor editor = getPreferences(0).edit();editor.putString("text", mSaved.getText().toString());editor.putInt("selection-start", mSaved.getSelectionStart());editor.putInt("selection-end", mSaved.getSelectionEnd());editor.commit();}private EditText mSaved;
}


当我们点击back按钮离开PersistentState Activity时,触发了onPause()方法,在onPause()方法里我们对第一个文本框的状态(其中的文本和对文本的选择)进行了保存。

当我们再次进入这个Activity时,触发了onResume()方法,在onResume()里我们将保存的信息重新加载到第一个文本框中。

通过onPause和onResume方法,我们可以对Activity的状态改变进行相应,执行一定的操作。其实,Android中Activity的状态改变不止create,pause和resume,相应的方法也不止onCreate,onPause和onResume。

在Android系统中,Activity是通过activity stack来管理的。当一个新的activity被创建,它就被置于栈顶并处于running状态。

Activity有四种状态:

1.处于屏幕最前端的Activity(栈顶)为active或者running状态;
2.失去了焦点但是可见的Activity为paused状态,例如被透明或者非全屏Activity遮盖;
3.被完全掩盖的Activity为stopped状态;
4.当Activity处于paused或者stopped状态时由于系统需要内存被杀死或者执行了finish()方法的Activity将处于destroyed状态。

参考Activity的生命周期图,

相关方法描述如下:

MethodDescriptionKillable?Next
onCreate()Called when the activity is first created. This is where you should do all of your normal static set up: create views, bind data to lists, etc. This method also provides you with a Bundle containing the activity's previously frozen state, if there was one.Always followed by onStart().NoonStart()
 onRestart()Called after your activity has been stopped, prior to it being started again.Always followed by onStart()NoonStart()
onStart()Called when the activity is becoming visible to the user.Followed by onResume() if the activity comes to the foreground, or onStop() if it becomes hidden.NoonResume() or onStop()
 onResume()Called when the activity will start interacting with the user. At this point your activity is at the top of the activity stack, with user input going to it.Always followed by onPause().NoonPause()
onPause()Called when the system is about to start resuming a previous activity. This is typically used to commit unsaved changes to persistent data, stop animations and other things that may be consuming CPU, etc. Implementations of this method must be very quick because the next activity will not be resumed until this method returns.Followed by either onResume() if the activity returns back to the front, or onStop() if it becomes invisible to the user.YesonResume() or
onStop()
onStop()Called when the activity is no longer visible to the user, because another activity has been resumed and is covering this one. This may happen either because a new activity is being started, an existing one is being brought in front of this one, or this one is being destroyed.Followed by either onRestart() if this activity is coming back to interact with the user, or onDestroy() if this activity is going away.YesonRestart() or
onDestroy()
onDestroy()The final call you receive before your activity is destroyed. This can happen either because the activity is finishing (someone called finish() on it, or because the system is temporarily destroying this instance of the activity to save space. You can distinguish between these two scenarios with the isFinishing() method.Yesnothing

 

 

 

 

 

这篇关于Android 2.2 API Demos -- PersistentState(Activity)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/843549

相关文章

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

android-opencv-jni

//------------------start opencv--------------------@Override public void onResume(){ super.onResume(); //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是 //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现

1.前言 在10.0的系统rom定制化开发中,在进行一些平板等默认横屏的设备开发的过程中,需要在进入camera2的 时候,默认预览图像也是需要横屏显示的,在上一篇已经实现了横屏预览功能,然后发现横屏预览后,拍照保存的图片 依然是竖屏的,所以说同样需要将图片也保存为横屏图标了,所以就需要看下mtk的camera2的相关横屏保存图片功能, 如何实现实现横屏保存图片功能 如图所示: 2.mtk

android应用中res目录说明

Android应用的res目录是一个特殊的项目,该项目里存放了Android应用所用的全部资源,包括图片、字符串、颜色、尺寸、样式等,类似于web开发中的public目录,js、css、image、style。。。。 Android按照约定,将不同的资源放在不同的文件夹中,这样可以方便的让AAPT(即Android Asset Packaging Tool , 在SDK的build-tools目

Android fill_parent、match_parent、wrap_content三者的作用及区别

这三个属性都是用来适应视图的水平或者垂直大小,以视图的内容或尺寸为基础的布局,比精确的指定视图的范围更加方便。 1、fill_parent 设置一个视图的布局为fill_parent将强制性的使视图扩展至它父元素的大小 2、match_parent 和fill_parent一样,从字面上的意思match_parent更贴切一些,于是从2.2开始,两个属性都可以使用,但2.3版本以后的建议使

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR