activity--常见属性总结
15.Activit的几个重要属性总结?
12.onNewIntent()使用Tips?
11.launchMode的属性介绍?及其常用的Intent Flag?
====
15.Activit的几个重要属性总结?
1.Activity的affinity(亲和力)
2.Intent几种常见的flags
3.<activity>与task相关属性
launchMode:
taskAffinity:
Activity的task相关属性?
allowTaskReparenting:
alwaysRetainTaskState:
clearTaskOnLaunch:
finishOnTaskLaunch:
documentLaunchMode:
12.onNewIntent()使用Tips?
1. 方法体中需手动调用setIntent(intent),否则之后的getIntent()获取的都是旧的intent对象;
2. 被onNewIntent方式打开的activity,对生命周期的影响.
1. 之前activity是resume状态,onNewIntent()后只会调用onResume()方法
2. 否则按照 `onNewIntent->onRestart->onStart->onResume->.
在IntentActivity中重写下列方法:onCreate onStart onRestart onResume onPause onStop onDestroy onNewIntent
1、其他应用发Intent,执行下列方法:
onCreate
onStart
onResume
2、接收Intent声明:
<activity android:name=".IntentActivity" android:launchMode="singleTask"
android:label="@string/testname">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="philn"/>
</intent-filter>
</activity>
3、如果IntentActivity处于任务栈的顶端,也就是说之前打开过的Activity,现在处于onPause、onStop状态的话,其他应用再发送Intent的话,执行顺序为:
onNewIntent,onRestart,onStart,onResume。
在Android应用程序开发的时候,从一个Activity启动另一个Activity并传递一些数据到新的Activity上非常简单,但是当您需要让后台运行的Activity回到前台并传递一些数据可能就会存在一点点小问题。
首先,在默认情况下,当您通过Intent启到一个Activity的时候,就算已经存在一个相同的正在运行的Activity,系统都会创建一个新的Activity实例并显示出来。为了不让Activity实例化多次,我们需要通过在AndroidManifest.xml配置activity的加载方式(launchMode)以实现单任务模式,如下所示:
<activity android:label="@string/app_name" android:launchmode="singleTask"android:name="Activity1"></activity>
launchMode为singleTask的时候,通过Intent启到一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法,如下所示:
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);//must store the new intent unless getIntent() will return the old one
processExtraData();
}
不要忘记,系统可能会随时杀掉后台运行的 Activity ,如果这一切发生,那么系统就会调用 onCreate 方法,而不调用 onNewIntent 方法,一个好的解决方法就是在 onCreate 和 onNewIntent 方法中调用同一个处理数据的方法,如下所示:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
processExtraData();
}
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
processExtraData()
}
private void processExtraData(){
Intent intent = getIntent();
//use the data received here
}
二、onNewIntent()的setIntent()和getIntent()
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// setIntent(intent);
int data = getIntent().getIntExtra("HAHA", 0);
// int data = intent.getIntExtra("HAHA", 0);
}
如果没有调用setIntent(intent),则getIntent()获取的数据将不是你所期望的。但是使用intent.getInXxx,貌似可以获得正确的结果。
注意这句话:
Note that getIntent() still returns the original Intent. You can use setIntent(Intent) to update it to this new Intent.
所以最好是调用setIntent(intent),这样在使用getIntent()的时候就不会有问题了。
11.launchMode的属性介绍?及其常用的Intent Flag?
什么是Activity的启动模式(LaunchMode)
启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置
启动模式有4种,分别为standard、singleTop、singleTask、singleInstance;这四种模式影响了Activity所在的任务栈.
Intent.setFlag(int flags)方法传递的一个整形的数据,被Android系统设置为了常量:
FLAG_ACTIVITY_NEW_TASK:这个标识会使新启动的Activity独立创建一个Task。
FLAG_ACTIVITY_CLEAR_TOP:这个标识会使新启动的Activity检查是否存在于Task中,如果存在则清除其之上的Activity,使它获得焦点,并不重新实例化一个Activity,一般结合FLAG_ACTIVITY_NEW_TASK一起使用。
FLAG_ACTIVITY_SINGLE_TOP:等同于在LauncherMode属性设置为singleTop。
activity--常见属性总结的更多相关文章
- Android Activity标签属性
Android Activity标签属性 Activity 是 Android 系统四大应用组件之一,用户可与 Activity 提供的屏幕进行交互,以执行拨打电话.拍摄照片.发送电子邮件等操作开发者 ...
- CALayer基本介绍与常见属性
属性框架:QuartzCore CA: CoreAnimation -> 核心动画,所有的核心动画都是添加给layer的! 与UIView的区别: 1.layer负责内容的展示,不接受任何用户交 ...
- CoreGraphics-线段常见属性及渲染模式介绍
线段常见属性: 1.线宽 2.线头样式 3.接头样式 4.颜色(包括描边颜色和填充颜色) override func draw(_ rect: CGRect) { // 获取图形上下文对象 let c ...
- Ext.Window 的常见属性
Ext.Window 的常见属性: plain:true,(默认不是) resizable:false,(是否可以改变大小,默认可以) maximizable:true,(是否增加最 ...
- UIView常见属性总结
一 UIVIew 常见属性 .frame 位置和尺寸(以父控件的左上角为原点(,)) .center 中点 (以父控件的左上角为原点(,)) .bounds 位置和尺寸(以自己的左上角为原点 (,)) ...
- UISlider常见属性
常见属性 self.mySlider.minimumValue = 0.0; // 最小值 self.mySlider.maximumValue = 10; // 最大值 self.mySl ...
- UIScrollView常见属性
什么是UIScrollView •设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限 • •当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容 • •普通的UIV ...
- UIPickerView常见属性、常见方法(包括代理方法和数据源方法)的一些说明
一.UIPickerView 1.UIPickerView的常见属性 // 数据源(用来告诉UIPickerView有多少列多少行) @property(nonatomic,assign) id< ...
- UIView的常见属性
UIView的常见属性: @interface UIView : UIResponder<NSCoding, UIAppearance, UIAppearanceContainer, UIDyn ...
- UIButton 头文件常见属性和方法
UIButton头文件常见属性 1.属性 contentEdgeInsets: default is UIEdgeInsetsZero.设置内容四边距,默认边距为0 @property(nonatom ...
随机推荐
- Archlinux安装总结
Archlinux安装总结 一.引导 1.BIOS与UEFI root@archiso ~ # ls /sys/firmware/efi/efivars ls: cannot access '/sys ...
- ios12更新开发者需要做的
1.StatusBar内部结构改变 现象:crash crash log: -[_UIStatusBarIdentifier isEqualToString:]: unrecognized selec ...
- Day02_Python基础学习今日总结
1.模块(库):是别人写好的函数封装成一个名字,内部有丰富的功能可以直接调用.分为标准库和第三方库.标准库直接导入即可使用,而第三方库需要下载安装才能用. 2.在项目中导入库时,自建的文件名不能喝库名 ...
- 安装Java8以后,Eclipse运行异常解决方案
再输入cmd,java后提示运行环境配置中,安装的是jdk1.7,但要求是jdk1.8,也就是说Java8. 网上删除注册表,下载彻底清除软件均不能解决问题的,请按照下边提示完成操作即可. 1.在文件 ...
- Power BI 关注博客更新
原本当你访问你常用的数据库时候,该库的新增,修改,删除,通过PowerBI都很容易发现,但是在Web上面,通过PowerBI来发现Web修改就没那么容易了. 现在,我想通过PowerBI的报告来显示某 ...
- js实现软键盘
<p><img id="img" onclick="javascript:var s=document.createElement('script'); ...
- curl传输数据时遇到的问题整理
1.get传参,参数带有空格的传输方式 因为使用get传输的时候,有的参数可能存在有空格,为了避免传输是错误是字符替代“%20” 或者使用函数转译一下参数http_build_query($param ...
- 浏览器h5新建文件 保存到本地(相当于浏览器写文件)
function doSave(value, type, name) { var blob; if (typeof window.Blob == "funct ...
- 锋利的jQuery初学(1)
引包: 1,首先将文件放进项目里面: 2,再在项目里面进行引用jQuery; (书写方式:<script src="jquery-x.xx.1.min.js">< ...
- jsp的四个作用域page、request、session、application
1.简单说 page指当前页面.在一个jsp页面里有效 2.request 指从http请求到服务器处理结束,返回响应的整个过程.在这个过程中使用forward方式跳转多个jsp.在这些页面里你都可以 ...