《第一行代码》阅读笔记(5-9章)

一.第五章

(本章只理解了大概)

1.广播机制

广播分为标准广播有序广播
标准广播直接分发到所有广播接收器
有序广播依次分发到各个接收器

二.第六章

1.将数据存入/取出文件

两种模式MODE_PRIVATE(覆盖 默认用此)MODE_APPEND(追加),其余两种在4.2版被废弃不做介绍。
注意:读取权限的申请?这里没提到,不过可能需要SD卡的读取权限。

2.SharedPreferences

调用Activity中的getSharedPreferences(“name”,模式)方法获取到SharedPreferences.Editor对象

通过设置 key , value 方式存储键值对,最后调用apply方法保存。
同理于取,不做介绍。

3.SQLite

新建类继承于SQLiteOpenHelper,在onCreate方法中新建表

onUpgrade方法中更新表,每次更新都会导致数据库数据清除,通过传入比之前更大的版本号自动调用onUpgrade方法。

添加数据

调用getWritableDatabase()方法获取数据库db
实例化ContentValues插入键值对后再调用db直接插入
其他不做介绍

同样也可以直接使用sql语句操作数据库
eg.db.execSQL(“delete from xx where number > ?”,new String[]{“500”});

4.LitePal 数据库开源操作库

(重点) 同样的有GreenDao
首先导入库,‘org.litepal.android.core:1.3.2’
接着在main目录下新建assets目录下新建litepal.xml

1
2
3
4
5
6
7
<litepal>
<dbname value = "name"></dbname>
<version value = "1"></version>

<list>
</list>
<litepal>

接下来配置 AndroidManifest.xml ,在application标签下面的 android:name=”org.litepal.LitePalApplication”

使用

首先,新建对应表的实体类(类—>表 一个类对应一张表)。
接着在litepal.xml中配置

1
2
3
4
5
6
7
8
<litepal>
<dbname value = "name"></dbname>
<version value = "1"></version>

<list>
<mapping class = "com.example.xxx.class"></mapping>
</list>
<litepal>

eg.
创建数据库 Connector.getDatabase()
插入数据

1
2
3
Class xx = new Class();
....(设置数据)
xx.save();

同理于其他 不予列举

三.第七章

1.内容提供器

内容提供器是不同应用之间共享数据的渠道

2.Android权限机制

Android权限分为普通权限危险权限,普通权限由系统之间授权,危险权限需要示意用户是否给予权限。

四.第八章

本章讲调用系统组件(相机,相册等),未仔细阅读。

五.第九章

注意本章要申请网络权限

1.WebView使用方法

2.HTTP协议访问

HTTP协议访问网络属于底层实现,现在常用封装好的库来代替 ,但也必须了解。
首先,网络属于耗时操作,只能在子线程中运行
几个主要的点

1
2
3
4
5
6
7
8
Url url = new Url("");
HttpConnection connection = new HttpConnection ();
connection .setRequestMethod("GET/POST");
connection .setConnectionTimeout(8000(ms));
connection .setReadTimeout(8000(ms));
InputStream in = connection.getInputStream();
BufferedReader reader = new BufferedReader( new InputStreamReader(in) );
//处理reader就可以了

3.使用OkHttp

okhttp是Square公司的开源网络库,类似的有Retrofit。
主要操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
OkHttpClient client = new OkHttpClient();//请求主体
Request request = new Request.Builder() //request对象
.url("url")
.builder();
Response response = client.newCall(request).execute(); //发送请求

//-------------------------Post提交------------------------------------//
RequestBody requestBody = new FormBody.Builder()
.add("key","value")
.builder();
Request request = new Request.Builder()
.url("url")
.post(requestBody )
.builder();

4.解析XML

三种方式:Pull,SAX,DOM(此书未提及)

5.解析Json

多种方式,书上主要写JSONObjectGSON还有一种常用的为FastJson
由于我习惯用Gson所以这里我稍微介绍下Gson。

用Gson解析Json首先要先根据Json构造对应的实体类,如果用Android Studio的话可以添加插件GsonFormat根据Json自动生成对应的实体类。

其次是用法

1
Class JsonClass = new Gson().fromJson(String,Class.class);

如果的List的话较为麻烦 (此处凭记忆打的可能有错,具体请百度)

1
List<T> list = new Gson().fromJson(json,new TypeToken< List<T> >() {}.getType() );

完结

Jason Xu wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
坚持原创技术分享,您的支持将鼓励我继续创作!