《Android开发进阶:从小工到专家》-第一章:Android

2018-11-02  本文已影响0人  夜瑾漠

《Android开发进阶:从小工到专家》——个人读书笔记

第一章:Android 的构成基石——四大组件

1.1 Activity

注意:并不是各个时期的Activity都是可见的,只有在onResume()函数和onStop()函数之间的Activity是可见的。

Activity的生命周期图

1.1.1 Activity 的构成

1.1.2 Activity 的四种启动模式

1.1.3 FragmentActivity 与 Fragment

1.2 Service 与 AIDL

1.2.1 普通 Service

每个服务只会有一个实例,无论调用多少次startService(),只要调用一次stopService() 或 stopSelf()服务就会被停止

1.2.2 IntentService

1.2.3 运行在前台的 Service

1.2.4 AIDL(Android 接口描述语言)

1.3 Broadcast(广播)

1.3.1 普通广播

注意:广播需要进行注册,分为两种:静态注册(在 AndroidManifest.xml 文件中进行注册)、动态注册(在代码中进行注册)

//动态注册示例:
private void registerMyBroadcast()
{
  registerReceiver(new MyBroadcastReceiver()
    , new IntentFilter(HELLO_ACTION))
}

如果是在 Activity 或者 Fragment 中进行动态测试,则需要在 onDestroy() 中实时的注销该广播

1.3.2 有序广播

1.3.3 本地广播

函数 作用
LocalBroadcastManager.getInstance(Context).registerReceiver(receiver, intentFilter) 注册Receiver
LocalBroadcastManager.getInstance(Context).unregisterReceiver(receiver) 注销Receiver
LocalBroadcastManager.getInstance(Context).sendBroadcast(new Intent(HELLO_ACTION)) 发送异步广播
LocalBroadcastManager.getInstance(Context).sendBroadcastSync(new Intent()) 发送同步广播

1.3.4 sticky 广播

注意:使用此广播需要获得 BROADCAST_STICKY 权限

1.4 ContentProivider(外共享数据)

进一步划分:
[scheme:][//authority][path][?query][#fragment]
其中有下面几个规则:
path可以有多个,每个用/连接,比如
scheme://authority/path1/path2/path3?query#fragment
query参数可以带有对应的值,也可以不带,如果带对应的值用=表示,如:
scheme://authority/path1/path2/path3?id = 1#fragment,这里有一个参数id,它的值是1
query参数可以有多个,每个用&连接
scheme://authority/path1/path2/path3?id = 1&name = mingming&old#fragment
这里有三个参数:
参数1:id,其值是:1
参数2:name,其值是:mingming
参数3:old,没有对它赋值,所以它的值是null
在android中,除了scheme、authority是必须要有的,其它的几个path、query、fragment,它们每一个可以选择性的要或不要,但顺序不能变,比如:
其中"path"可不要:scheme://authority?query#fragment
其中"path"和"query"可都不要:scheme://authority#fragment
其中"query"和"fragment"可都不要:scheme://authority/path
"path","query","fragment"都不要:scheme://authority
等等……
关于 Uri 的详细结构划分,可参考这篇博客https://blog.csdn.net/harvic880925/article/details/44679239

上一篇 下一篇

猜你喜欢

热点阅读