定义内部类 NetworkChangeReceiver
该类继承自BroadcastReceiver 重写父类onReceive()方法
onCreate方法 创建IntentFilter实例 添加的action是android.net.conn.CONNECTICITY_CHANGE(网络状态发生变化时的广播 广播接收器想要接听什么广播,就在这里添加相应的action)
创建NetworkChangeReceiver实例,调用registerReceiver()方法进行注册 ,传入NetworkChangeReceiver实例和IntentFilter实例
在OnDestroy()里用unregisterReceiver()取消注册
告诉用户是否有网络:
getSystemService()方法得到ConnectivityManager实例
该实例调用getActiveNetworkInfo()得到NetworkInfo实例
NetworkInfo的isAvailable()方法可判断是否有网络
在Manifest文件里加入 user-permission权限
新建广播接收器 Broadcast Receiver
在Manifest里的里添加相应的action
声明权限:
发送标准广播:
新建广播器MyBroascastReceiver 并重写onReceive()方法
Manifest里对广播器进行修改 添加一条
MainActivity里
在按钮里通过Intent对象把要发送的广播的值传入
调用Context的sendBroadcast方法广播出去
sendOrderedBroadcast()
两个参数 1.intent 2.与权限相关的字符串
在AndroidManifest中可以通过priority设置优先级
在Activity中可以通过abortBroadcast方法截断广播
LocalBroadcastMangager的getInstance()方法得到实例
注册:调用LocalBroadcastManager的sendBroadcast
发送:LocalBroadcastManager的sendBroadcast()
Context类中提供了一个
注意的点:重写onDestroy() 获取内容并调用save()把文件存储到文件中 这样保证活动销毁之前一定会调用这个方法
*save() 没看懂哭泣 *
对字符串进行非空判断 TextUtils.isEmpty() 传入字符串等于null或者空字符串时都返回true
setSelection()将输入光标移动到文本的末尾位置
键值对存储 支持不同的数据类型
得到SharedPreferences对象的三种方法:
SQLiteOpenHelper 抽象类
两个抽象方法 1.onCreate() 2.onUpgrade()
两个实例方法1.getReadableDatabase() 2.getWriteDatabase()
可供重写的构造方法
参数1.Context 2.数据库名3.查询数据时返回自定义的Cursor(一般null)4.当前数据库的版本号
数据类型:real表示浮点型
text表示文本类型
blob表示二进制类型
??adb shell 中出现permission denied
用su
su root均无法解决
SQLiteDatebase中insert()
3个参数:
1.表明2.(null)未指定添加数据的情况下给某些可为空的列自动赋值NULL 3. ContentValus对象 提供了一系列put()重载
步骤:1.获取SQLiteDatebase对象
2.用ContentValues对要添加的数据进行组装
update()四个参数 3.对应SQL语句where部分 ?是占位符
4.字符串组为第三个参数中的每个占位符指定相应的内容
delete()参数同update
query() 7个参数:
1.表名
2.指定查询哪几列,不指定则默认查询所有
3.4.约束查询某一行或者某几行的数据,不指定则默认所有行
5 指定去group by的列
6group by的数据过滤
7指定查询结果的排序方式
调用query()后会返回一个Cursor对象
配置:1.app/build.,gradle
2.app/src/main New–>Directory 在assets里新建litepal.xml
3.修改AndroidManifest.xml文件中 对LitePalApplication进行配置
使用:
新建:
1.用面向对象的思维定义一个类
2.将类添加到映射模型列表当中 修改litepal.xml
3.修改MainActivity中 Connector.getDatabase()
升级:
直接通过加原来表的类的set get来增加新的类
1.新建新的类
2.更改litepal.xml中的
添加:
1.创建模型类的实例
2.设置要存储的数据
3.save()
进行CRUD操作室需要继承自DataSupport类
更新
法一:对已经存储的对象重新设值,重新调用save()
已经存储:model.isSaved( )
ture:
* 已经用过model.save()添加过了
* model对象是通过LitePal提供的查询API查出来的
法二;new一个实例,调用set啥啥啥(表里的属性)方法设值要更新的数据,最后用updateAll()执行
* updateAll()要改成默认值 需要用setToDefault()
删除
法一: 调用已存储对象的delete()
法二:DataSupport.deleteAll()
查询
List<Book> books = DataSupport.findAll(Book.class);
调用findAll() Book.class表示要查的表 返回一个Book类型的List集合
使用API进行查询
连缀查询:
List<Book> books=DataSupport.select()
.where()
.order()
.limit()
.offset()
.find()
测试机没有root权限,用如下方法,查看到了数据库内容
step 1: 在app的gradle中导入如下:implementation ‘com.facebook.stetho:stetho:1.3.1’
step 2:在你自定义的Application的onCreate()中加入如下代码:Stetho.initializeWithDefaults(this);
step3:保持电脑是连着手机的, 在谷歌浏览器中进入如下地址 chrome://inspect/#devices’
step4:点击inspect