一.Android 四大组件之Activity
1. Activity概念
Activity是Android的四大组件之一,对于用户而言Activity就是手机屏幕界面,我们可以和Activity交互,比如说打电话,看地图,浏览网页,发邮件等。对于开发人员来说Activity就是编程的入口,我们可以在Activity中加载布局,设置组件的监听事件以及相应监听。Activity之间通过Intent进行通信。
2. 生命周期
四种状态:
运行态:能看到界面,可以获得焦点
暂停态:能看到界面,不能获得焦点
停止态:看不到界面,不能获得焦点
销毁态:Activity被销毁
七种方法:onCreate(),onStart(),onResume(),onPause(),onStop(),onRestart(),
onDestroy().
不同情况的方法调用:
1) 点击图标时,执行onCreate(),onStart(),onResume()
2) 跳转Activity(完全覆盖),执行onPause(),onStop()
3) 半透明,执行onPause()(对话框形式显示时)
4) 返回按钮,执行onResume(),
5) 点击home,执行onPause(),onStop()
6) 再次点击图标,执行onRestart(),onStart(),onResume()
7) 点击返回,执行onPause(),onStop(),onDestroy()
8) onSaveInstanceState(),onRestoreInstanceState()
手机横竖屏切换,调用的方法依次为:onCreate(),onStart(),onResume(),onSaveInstanceState(),
onPause(),onStop(),onDestroy(),onCreate(),onStart(),onResume(),
onRestoreInstanceState()
3. Activity的四种启动模式
a) 标准模式:重新创建Activity,内存分布20M,如果不断创建的话,会引发OOM(内存溢出)
b) Task顶单例模式(Single Top):当Activity在栈顶时,不会被创建,如果不在栈顶,情况则与标准模式相同。
c) Task内单例模式(Single Task):栈顶不准有Activity,否则全部remove掉。
d) 全局模式(SingleInstance):重新创建一个栈来存储被创建的Activity。(比如浏览器,联系人,打电话)
二.Android 四大组件之Service
1.Service的概念
Service是Android四大组件之一,和Activity以及BroadcastReceiver的等级一样,如果把Activity看成是运行在前端的组件,那么Service是运行在后台的,Service可以帮助我们做一些不需要页面的操作,比如项目中用到的网络数据的传输,音乐的播放,文件I/o操作等,当我们把当前的应用切换到其他应用之后,我们的Activity处于停止状态,服务还一直处于运行的状态。
2.Service的分类
区别:是否将Activity传给Activity
1) 本地服务
Activity Service
StartService()-------------------------onCreate()--------onStartCcommand()
StopService()-------------------------onDestroy()
本地服务特点:使用简单,但是不能从Service中获取数据,本地服务的桥梁是Intent对象。
当Activity消失时,Service还处于运行状态。
2) 绑定服务
Activity Service
BindService(intent,sc,flags)-------------onCreate()----onBind()
unBindService(sc)-------------------------onunBind()-----onDestroy()
绑定服务特点:把具体的Activity组件和Service绑定在一起,当Acticity消失时,那么Service也消失。绑定服务的桥梁是ServiceConnection。
两个方法:onServiceConnected()和onServiceDisConnected().
onServiceConnected()这个方法将会在Service的onBind()函数返回
Binder对象时调用,我们从这个函数中取得MyBinder对象,然后获得Service的值,更新刷新Activity的UI.
onServiceDisConnected()这个方法系统会调用。
三.Android 四大组件之ContentProvider
1.ContentProvider的概念
ContentProvider解决进程之间数据共享的问题,把自己应用中的数据(数据库,本地文件)暴露给其他应用。
URI:统一资源标识符,其中URL是URI中特殊的一种,代表网络请求地址。
Uri的规范:content://com.baidumap/user(相当于请求的path)
Url的规范:http://ip:端口号/项目名/资源名
UriMatcher:这个类是系统提供的帮助类,主要用来匹配Uri的。
UriMatcher urimatcher=new UriMatcher(-1);
Urimatcher.addUri(String authority,String path,int code);
Urimatcher.addUri(“com.baidumap”,”user”,1);
String uri_str=”content://com.baidumap.user”;
Uri uri=Uri.parse(uri_str);
Int code=urimatcher.match(uri);
ContentUris:帮助类,拼接id到Uri中或截取Uri中id的值
String uri_str=”content://com.baidumap.user”;
Uri uri=Uri.parse(uri_str);
Uri new_uri=ContentUris.WithAppendedId(uri,10);
获取Uri中的Id值
//content://com.baidumap/user/10//10;
2.如何实现自定义ContentProvider?
a) 定义类继承ContentProvider,实现六个方法
GetType()//返回数据的Mime_type值,自定义用不到。
OnCreate()//实例化数据库获得SQLiteDatabase对象
Delete()
Query()
Insert()
Update()
通过SQLiteDataBase进行增删改查
b) 在Manifest.xml文件中配置(暴露给其他应用)
<provider
Android:name=””
Android:authorities=””
Android:exported=”true”>
</provider>
3.Uri的组成部分?
Content://com.example.transportationprovider/trains/122
A. 前缀标识,任何Uri都有一个固定的前缀,content://表明这是ContentProvider中使用的Uri
B. 数据的权限标识,要求唯一。
C. 路径标识,代表Uri所要访问的具体数据表
D. Id信息,C中数据表的某一个Id值。
四.Android 四大组件之BroadcastReceiver
1.BroadcastReceiver的概念
可以把广播比喻成为一个系统级的监听器,可以时刻监听手机的状态发生变化,比如说,手机网络信号强度,手机电池电量,收到短信,收到电话等。
2.注册广播的两种方式
新建类继承BroadCastReceiver 重写onReceiver() 方法,在AndroidManifast.xml注册广播
静态注册广播
<receiver
android:name="com.bawei.demo.activity.MyReceiver">
<intent-filter >
<action
android:name="com.bawei.demo.MY_RECEIVER"/>
</intent-filter>
</receiver>
特点:不需要手动注销这个广播,不是不能注销,因为我们想一直使用这个广播。静态注册的广播不管应用程序是否启动或者运行,广播依然有效。
动态注册广播通过Java代码
MyReceiver receiver=newMyReceiver();
IntentFilter filter=newIntentFilter(ACTION);
registerReceiver(receiver,filter); //注册广播
//注销广播
unregisterReciver(receiver);
这种广播使用起来比较随便,可以随时注销。
广播的使用场景:不是固定的,根据不同的业务需求来决定。
特点:系统广播不需要我们主动调用某些方法发送广播,系统会自动发送。我们只需要重写OnReceiver方法,然后实现不同的功能即可。