Android基础之四大组件(Activity |
您所在的位置:网站首页 › 安卓的核心组件是什么软件做的 › Android基础之四大组件(Activity |
目录 四大组件 Activity(活动) Service(服务) Broadcast Receiver(广播接收者) Content Provider(内容提供者) 四大组件 Activity(活动) 简介 Activity相当于一个页面,可以在Activity中添加各种控件,例如Button,TextView等。一个Android程序(APP)可以由多个Activity组成提供了与用户交互的可视化界面(GUI)Android中使用栈task来存储Acticity,及先进后出,栈顶及我们所看到的页面 生命周期 onCreat()--->onStart()--->onResume()--->onPause()--->onStop()--->onDestory()onStop()--->onRestart()--->onStart()图解
在该模式下,Activity可以有多个实例,每次启动一个Activity,无论栈Task里面是否已经存在该Activity的实例,都将创建一个新实例入栈 例如,Acticity A调用B,然后B调用A,这时栈的情况是ABA SingleTop(栈顶复用模式)当一个SingleTop实例位于栈顶时,再去启动它时,不需要创建新的实例,只需要调用newInstance()方法,但若不在栈顶,则会被重新创建 例如,A调用B,B调用B自己,情况是AB,若A调用B,B调用A,A再调用B,情况是BABA,同Standard SingleTask(单任务模式)如果启动的Acticity存在于栈Task中,则该Activity的实例会被移到栈顶(相当于将该Acticity之上的实例全部移出栈) 例如,原来Stack里面有ABCD,调用B,那就变成AB SingleInstance(单实例模式)一个Activity就是一个栈 启动方式 为Activity指定所需任务栈的方式在AndroidManifest.xml下,添加taskAffinity属性(默认情况下不指定该属性值,则该activity的指定栈为应用的包名) 为Activity指定启动模式在AndroidManifest文件中指定lanchMode属性值 Intent intent = new Intent(MainActivity.this, SecondActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);通过Intent中设置标志位来指定启动模式 常见Flags标志位 · FLAG_ACTIVITY_NEW_TASK 指定singleTask模式 · FLAG_ACTIVITY_SINGLE_TOP 指定singleTop模式 · FLAG_ACTIVITY_CLEAR_TOP 同一栈中的所有位于该activity上方的都出栈 跳转方式 显示启动Intent内部直接声明要启动的activity所对应的class Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intnet); 隐式启动分为两步走 第一步,在文件里配置activity属性 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){ readContacts(); }else { // 您拒绝了权限 } } } uri主要格式 * : 表示匹配任意长度的任意字符# : 表示匹配任意长度的数字 content://com.example.app.provider/table1 content://com.example.app.provider/table1/1 //一个能够匹配任意表的内容URI格式就可以写成: content://com.example.app.provider/* //一个能够匹配表中任意一行数据的内容URI格式就可以写成: content://com.example.app.provider/table1/#作用 封装。对数据进行封装,提供统一的接口,使用者完全不必关心这些数据是在DB,XML、Preferences或者网络请求来的。当项目需求要改变数据来源时,使用我们的地方完全不需要修改提供一种跨进程数据共享的方式 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |