转自:http://blog.csdn.net/leewind841209/article/details/6569324
[Target]
在上面一篇文章里面讲了怎么用onSaveInstanceState,也分析了onSaveInstanceState的局限性和问题,这篇文章就讲讲怎么用onRetainNonConfigurationInstance突破这种局限
[Investigation]
上篇文章讲到onSaveInstanceState调用的返回值只出现在onCreate和onRestoreInstanceState两个地方,且必须以Bundle的形式存储信息。在代码上面有很多的局限性。所以Google还提供了一个API:onRetainNonConfigurationInstance.
当Device的Configuration发生改变时,这个改变包括了屏幕的方向的变化、keyboard的弹出等,当发生改变时Activity会调用到onDestroy,这个时候可以通过onRetainNonConfigurationInstance来保存数据。
onRetainNonConfigurationInstance的使用
onRetainNonConfigurationInstance的返回值是一个object,所以在这里可以把integer, string这些对象和一些自定义对象,返回出去,不用再受到bundle的局限。
onRetainNonConfigurationInstance的返回值是通过getLastNonConfigurationInstance调用的。可以通过
- Object obj = getLastNonConfigurationInstance();
或者cast来转换对象如下例所示:
- String str = (String) getLastNonConfigurationInstance();
好了最后不多说了放一个例子,具体就是读log,在模拟器上检验这个代码的时候,按ctrl+F11切换屏幕方向,就可以看到结果了。
- package com.leewind.onretainnonconfigurationinstance;
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- public class TestOnRetainNonConfigurationInstance extends Activity {
- /** Called when the activity is first created. */
- private static final String TAG = "Michael";
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- if (getLastNonConfigurationInstance()!=null) {
- String str = (String) getLastNonConfigurationInstance();
- Log.i(TAG, str);
- }
- }
- @Override
- public Object onRetainNonConfigurationInstance() {
- // TODO Auto-generated method stub
- //return super.onRetainNonConfigurationInstance();
- return "Michael";
- }
- }
你会发现一个很有意思的现象,横屏转竖屏的时候会打两行log,这是说要启动Activity 2次吗?
相关推荐
android activity方法调用图, 方便查找,对理解流程有用!
Activity之间的互相调用是Android应用中常见的场景,而操作数据库则涉及到数据持久化存储。以下是关于这两个知识点的详细说明: 1. **Android Activity互相调用**: - **启动模式**:Android中的Activity有四种...
本篇将重点讲解如何利用Intent在Android中调用Activity,并进行数据的传递与接收。 首先,让我们了解一下Activity。在Android中,Activity是用户界面的载体,它代表了用户可以看到并与其交互的一个屏幕。通过Intent...
cordova调用安卓原生activity插件 使用简介 JS端使用方式 //sendData表示要从js端发送到原生activity的数据,需用json对象传输 var sendData = { id:10001, name:"Simon", age:28 }; window.cordova.plugins....
Android Activity 生命周期 Android Activity 生命周期是指 Activity 从创建到销毁的整个过程,该过程中会经历多个状态变化,每个状态变化都会触发相应的回调方法。理解 Activity 生命周期是 Android 开发的基础。 ...
在这里,我们将深入探讨如何在Android中调用Activity以及如何使用AIDL。 首先,我们来看Activity的调用。Activity的生命周期包括onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()等方法。当...
在本篇文章中,我们将深入探讨如何在Android中实现Activity的实时模糊效果,并参考博文《Android Activity 实时模糊效果》。 首先,理解实时模糊效果的实现原理。在Android中,我们可以利用Bitmap的滤镜效果来达到...
这个"android Activity 详述 demo"旨在深入探讨Activity的工作原理及其在实际应用中的使用方式。通过链接给出的博客文章(http://blog.csdn.net/q610098308/article/details/50057927),我们可以学习到Activity的...
总结来说,实现"android activity右进右出动画"主要涉及创建动画XML资源,然后在Activity的生命周期中合适的位置调用`overridePendingTransition()`方法。通过这种方式,开发者可以为用户创造出更加生动、自然的应用...
因为`onCreate()`在Activity的第一次创建和重建时都会调用,而在Activity重建时,`onActivityCreated()`和`onStart()`只会被调用一次。 此外,如果你使用的是静态Fragment(即在布局文件中定义的Fragment),可能...
Android Activity学习笔记 Android Activity是Android系统中最基本的组件之一,它负责处理用户交互和显示用户界面。本文将深入讲解Activity的生命周期、Activity之间的数据交互、Activity启动模式、Task和BackStack...
### Android Activity之间数据的回传 #### 一、引言 在Android开发中,Activity间的交互是非常常见的需求。特别是当我们需要从一个Activity跳转到另一个Activity,并希望在完成某些操作后能够将数据回传给原始...
在Android应用开发中,Activity是构成应用程序的基本组件,它代表用户界面的一个屏幕。"android两个Activity的转换"这个主题涉及到如何在不同的Activity之间导航,这是Android应用交互的基础。以下是关于这个主题的...
Activity之间的调用是Android应用中常见的功能,用于实现不同界面间的跳转和数据传递。本主题将深入讲解Activity之间的调用机制以及Intent在其中的作用。 一、Activity的启动模式 Activity的启动模式分为四种:...
本篇文章将深入探讨如何在Android中实现Activity的背景透明。 首先,我们从AndroidManifest.xml文件开始。为了使Activity背景透明,我们需要在对应的Activity标签中添加一个特殊的主题(Theme)。Android系统提供了...
综上所述,"android调用另一个activity"涉及到的核心概念包括Intent的使用、Activity的启动和生命周期管理,以及数据在Activity间的传递。理解并熟练掌握这些知识点对于Android应用开发至关重要。通过实践和学习,...
本文将深入探讨如何从一个Android APK外部调用另一个应用的Activity,特别是针对示例代码中的场景——调用特定包名下的Activity。 #### 一、理解Intent与Component Name 在Android中,Intent是应用组件间通信的...
本篇文章将深入探讨Android的Activity周期,并通过实际测试来帮助开发者更好地掌握这个核心概念。 一、Activity生命周期概述 Activity的生命周期由系统管理,主要分为启动(Creation)、运行(Running)、暂停...
在Android应用开发中,Activity是用户界面的基本单元,用于展示应用程序的不同屏幕或“视图”。当我们需要在不同的Activity之间进行切换时,为了提供更丰富的用户体验,可以加入动画效果。这不仅能够使应用看起来...
### Android 中从Activity1跳转到Activity2再回到Activity1所经历的生命周期 在Android开发过程中,理解Activity的生命周期对于管理界面状态、处理用户交互以及响应系统事件至关重要。本文将详细解析从一个Activity...