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使用java实现网络连通性检查详解

《Android使用java实现网络连通性检查详解》这篇文章主要为大家详细介绍了Android使用java实现网络连通性检查的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录NetCheck.Java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求

2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)

《2025最新版AndroidStudio安装及组件配置教程(SDK、JDK、Gradle)》:本文主要介绍2025最新版AndroidStudio安装及组件配置(SDK、JDK、Gradle... 目录原生 android 简介Android Studio必备组件一、Android Studio安装二、A

使用Go调用第三方API的方法详解

《使用Go调用第三方API的方法详解》在现代应用开发中,调用第三方API是非常常见的场景,比如获取天气预报、翻译文本、发送短信等,Go作为一门高效并发的编程语言,拥有强大的标准库和丰富的第三方库,可以... 目录引言一、准备工作二、案例1:调用天气查询 API1. 注册并获取 API Key2. 代码实现3

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按