后台的Activity被系统回收怎么办?

onSaveIntanceState,当程序中的某个Activity A在运行中,主动或者被动的运行另外一个新的Activity B,这个时候 A就会执行onSaveIntanceState(Bundle)。

B完成以后又会来找A,这个时候A就有2种情况,一种情况是A被回收,一种是没有被回收,被回收的A要重新调用onCreate()方法,但是又和直接启动不一样,这次onCreate是带上参数saveIntanceState,没有被回收的就还是调用onResume

时间: 2024-10-12 21:40:33

后台的Activity被系统回收怎么办?的相关文章

四大组件之Activity(上)——Activity的生命周期、系统回收、系统配置改变的影响

第1节 Activity的使用 Activity几乎是每个应用必有的组件,所以任何安卓应用的开发几乎都是从Activity开始的. 比如,你希望设计一个计算器应用,要呈现这个计算器的功能(显示出计算器的样子,实现计算的能力)一定会在这个应用中创建一个Activity,让这个Activity展示的界面就是计算器. 所以使用Android Studio创建工程以后,会默认为我们创建一个Activity组件,它继承自Android SDK的Activity类. class CalulatorActiv

如何让后台Activity不被系统回收

最近帮忙客户定制一款A20平台的视频机,由于视频机内存太小,偶尔会出现从桌面跳转到其他应用(如泰捷视频看会电影)再返回桌面时桌面重启的情况,根据经验,应该是桌面主Activity由于内存太小被系统回收了. 开始认为在桌面应用AndroidManifest.xml文件中Application节点中加了一条属性:android:persistent="true" 就可以了,push到system/app重启,经测试,发现不行.应该这条属性比较适合Service. 最后在framework层

使用Fragment应用放置后台很久,被系统回收,出现crash

使用Fragment应用放置后台很久,被系统回收,出现crash:原因:系统做了源码FragmentActivity调用onSaveInstanceState保存Fragment对象,这时候系统恢复保存的Fragment,但是在FragmentActivity重新执行生命周期的时候,我们重新生成了fragment对象附加到该FragmentActivity,系统恢复的fragment和activity失去关联,出错:处理:方法1.在fragmentActivity里oncreate方法判断sav

Activity(活动)生命周期--系统回收活动数据存储

当一个活动进入停止状态的时候,是有可能被系统回收的.那如果处于停止状态的活动被系统回收了,而它上面却有我们所需要数据该如何保存呢?(类似于:打开qq进入下一个界面没有进去,返回的时候仍然不需要你输入账户名和密码)Activity类中提供了onSaveInstanceState()回调方法,这个方法可以保证活动在被回收之前一定会被调用,因此我们可以通过这个方法来解决活动被回收时临时数据得不到保存的问题. onSaveInstanceState()方法会携带一个Bundle类型的参数,Bundle提

如何处理android程序变为后台程序,系统回收资源,再次打开时,程序因为null指针等崩溃

home键等原因,程序会变为后台程序,系统会更具需要,可能回收资源,再打开时候,就会因为资源回收,再调用oncreate,没有Intent参数而导致程序崩溃.   这种情况,我们可以处理的方式有两种,一是用: @Override     protected void onSaveInstanceState(Bundle outState) {      // TODO Auto-generated method stub      super.onSaveInstanceState(outSta

Android实现防止被系统回收的Service

MainActivity如下: package cc.c; import java.util.List; import android.os.Bundle; import android.os.Process; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.app.Activity; import android.ap

android service被系统回收的解决方法

自己的app的service总是容易被系统回收,搜罗了一下,基本上的解决思路有以下几种: 1.把service写成系统服务,将永远不会被回收(未实践): 在Manifest.xml文件中设置persistent属性为true,则可使该服务免受out-of-memory killer的影响.但是这种做法一定要谨慎,系统服务太多将严重影响系统的整体运行效率. 2.提高service的优先级(未实践): 设置android:priority="1000" <!-- 为了消去加上andr

Android 匿名启动activity 启动系统activity

一般我们使用Intent 进行activity跳转时我们都知道需要跳转的activity的名字,例如: Intent intent=new Intent(FirstActivity.this,SecondActitivy.class); startActivity(intent); 当SecondActitivy.class和FirstActivity不再同一个App的时候,我们就需要用到匿名启动, 匿名启动: 首先需要设置被启动的SecondActivity 的xml配置文件: <activi

android细节之禁用activity的系统的默认切换效果

网上有很多方法来禁用系统的默认效果,这里贴上来我认为最简单的方法. overridePendingTransition(Animation.INFINITE, Animation.INFINITE); 这句话一般是我们用来替换自己的自定义的activity效果. 直接用Animation类下的infinity即可. 就看不到系统那个突突的切换效果了. 好了,小伙伴们开始愉快的玩耍吧.