Android - 四大组件
一、活动Activity
1、逻辑与视图分离,活动设置视图:setContentView(R.资源ID)
2、生命周期:onCreate、onStart、onResume、onPause、onStop、onDestroy
3、意图Intent:各组件之间交互的一种方式,如 startActivity(Intent实例)
4、Activity栈:
- 启动一个新的活动,它就会入栈并处于栈顶位置;
- 点击Back键或调用finish()方法销毁一个活动,处于栈顶的活动会出栈,前一个入栈活动就会重新处于栈顶的位置;
- 活动启动模式:standard、singleTop、singleTask、singleInstance ; 通过android:launchMode进行配置
standdard:默认启动模式,每次启动都会创建该活动一个实例,并入栈;
singleTop:启动活动时如果发现栈顶已经是该活动,则直接使用它,不会再创建新的活动实例;
singleTask:启动活动时会在栈中检查是否存在该活动实例,如果存在则直接使用该实例,并把该活动之上的所有活动统统出栈;
singleInstance:启用一个新的返回栈来管理该活动,可以用来解决不同应用程序共享活动实例(不管哪个应用程序访问该活动,都共用同一个返回栈);
5、生命周期实例:
- 开启活动:onCreate -> onStart -> onResume
- Home键:onPause -> onStop
- Back键(出栈):onPause -> onStop -> onDestroy
- 返回栈顶:onRestart -> onStart -> onResume
二、内容提供器ContentProvider
1、不同应用程序之间实现数据共享
2、访问其他程序中的数据:借助ContentResolver类,可以通过Context类的getContentResolver()方法获取到对象实例;
ContentResolver类提供了 insert()、update()、delete()、query()方法进行CRUD操作;
需要使用URI来定位内容,URI主要由两部分组成,权限(authority)和路径(path),例如:content://com.example.app.provider/table1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | //读取手机联系人 private void readContacts(){ Cursor cursor= null ; try { ContentResolver contentResolver=getContentResolver(); cursor=contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null , null , null , null ); while (cursor.moveToNext()){ String displayName=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)); String number=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); } } catch (Exception e){ } finally { if (cursor!= null ) cursor.close(); } } |
3、创建自定义内容提供器
通过新建一个类继承ContentProvider类的方式创建自定义内容提供器
通过<provider>标签对内容提供器进行注册
<provider
android:name="com.example.test.MyContentProvider"
android:authorities="com.example.test.providers"
android:exported="true"
</provider>
内容提供器需要一种机制来区分各种URI,android使用类 UriMatcher 来实现此功能;
三、广播机制Broadcast http://www.cnblogs.com/null2/p/5113711.html
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 开发的设计和重构,为开发效率服务
· 从零开始开发一个 MCP Server!
· Ai满嘴顺口溜,想考研?浪费我几个小时
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密