Android 第六课时 by姚鑫
2020-01-17 14:45:47 6 举报
AI智能生成
Andorid
作者其他创作
大纲/内容
ADB
简介
ADB,即 Android Debug Bridge 是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。可以在Android SDK/platform-tools中找到 adb 工具或下载 ADB Kits 。
作用
在设备上运行Shell命令; 将本地APK软件安装至模拟器或Android设备;
管理设备或手机模拟器上的预定端口;
在设备或手机模拟器上复制或粘贴文件。
命令
adb version
查看adb的版本信息
adb shell pm list packages
查看所有应用
adb uninstall [-k] <package-name>
卸载应用
adb shell pm clear <package-name>
清除应用数据与缓存
adb shell dumpsys activity activities | grep mFocusedActivity
查看前台 Activity
adb shell dumpsys activity services <package-name>
查看正在运行的 Services
adb shell dumpsys package <package-name>
查看应用详细信息
adb shell pm path <package-name>
查看应用安装路径
adb shell am start [options] <intent>
启动应用/ 调起 Activity
adb shell am startservice [options] <intent>
调起 Service
adb shell am stopservice [options] <intent>
停止 Service
adb shell am broadcast [options] <intent>
发送广播
adb shell am force-stop <package-name>
强制停止应用
数据持久化
简介
指将那些内存中的瞬时数据保存到设备中,保证即使在手机或电脑关机的情况下,这些数据也不会丢失。
文件存储
特点
文件存储是Android中最基本的一种数据存储方式,它不对存储的内容进行人的格式化处理
适合存储一些简单的文本数据或二进制数据
将数据存储到文件中
openFileOutput
第一个参数是文件名
注意这里指定的文件名不可以包含路径
因为所有的文件都是默认存储到/data/data/<packagename>/fies/目录下
第二个参数是文件操作模式
MODE_PRIVATE
文件名同名时,会覆盖原文件
MODE_APPEND
文件夹存在,追加内容,不存在,创建文件
MODE_WORLD_READABLE
MODE_WORLD_WRITEABLE
返回一个FileOutputSteam对象
得到对象后可以使用Java流的方式将数据写入到文件中了
验证如何保存成功
Android Device Monitor
file - setting - Android SDK - Android SDK Location - tools - monitor.bat - File Explorer - data -data- XXX -file
view - Device File Exporer - data -data- XXX -files
从文件中读取数据
openFileInput
只接收一个参数,要读取的文件名
自动到/data/data//fies/目录加载这个文件
返回一个FileInputStream对象
通过Java流方式可以讲数据读取出来
SharedPreferences存储
特点
使用键值对的方式来存储数据的
将数据存储到SharedPreferences中
3种得到SharedPreferences方法
Context中的getSharedPreferences方法
第一个参数用于指定SharedPreferences文件的名称
如果不存在则藏剑一个
存在在/data/data<packagename>/shared_prefs/
第二个参数用于指定操作模式
MODE_PRIVATE
MODE_WORLD_WRIEABLE
MODE_WORLD_READABLE
MODE_MULTI_PROCESS
Activity类中的getPreferences方法
只接受一个操作模式参数
因为使用这个方法时会自动将当前活动类名作为SharedPreferences文件名
PrefereneManager类中的getDefaultSharedPreferences方法
接收一个Context参数
当前应用程序包名作为前缀来命名SharedPreferences文件
实现
调用SharedPreferences对象的edit ()方法来获取一个SharedPreferences.Editor对象
向ShardPreferences.Editor对象中添加数据
调用apply()方法讲添加的数据提交,从而完成数据存储操作
从SharedPreferences中读取数据
SQLite数据库储存
特点
SQLite是一款轻量级的关系型数据库
运算速度快,占用资源很少
支持SQL语法,遵循了市局哭的ACID事务
原子性(Atomicity):事务要么全部执行,要么全部不执行。
一致性(Consistency):需要遵守所有的约束以及其他的数据完整性规则,并且完全地更新所有的相关的对象(数据页和索引页)
隔离性(Isolation):每一个事务都与任何其他事务完全隔离。一个事务的动作不会受到另一个事务动作的干扰。
持久性(Durability):完成事务后,它的作用结果将永远的存在于系统内。数据是“安全的”这是指在诸多如停电或其他非磁盘系统故障的情况下也不会导致发生数据只写入一般的情况。
创建数据库
SQLiteOpenHelper抽象类
onCreate
创建数据库
onUpgrate
升级数据库
getReadableDatabase
只读操作
getWritableDatabase
可写操作
构造方法
第一个参数:Context
第二个参数:数据库名称,创建时的名称
第三个参数:允许我们在查询数据的时候返回一饿个自定义的Curosr,一般传null
第四个参数:表示当前数据库的版本号,氪对数据库进行升级操作
存放位置
存在在/data/data/<package name>/databases/
创建数据库
adb.exe使用
计算机-属性-高级系统设置-环境变量-把sdk 下的 platform-tools 目录配置到Path下
termial 输入 adb shell
如果失败与夜神模拟器冲突
把现在SDK版本的adb.exe,覆盖掉模拟器安装文件中的adb.exe(夜神模拟器的是nox_adb.exe),重新连接模拟器
命令
E:\AndroidStudioProjects\SecondReceiver>adb shell
root@android:/ # su
2|root@android:/ # cd /data/data/com.pha.secondreceiver/databases/
root@android:/data/data/com.pha.secondreceiver/databases # ls
sqlte3 BookStore.db
.table
.schema
select * from Book;
升级数据库
增删改查(CRUD)
添加数据
insert
第一个参数:表名
第二个参数:在末指定添加数据的情况下给某些可为空的列自动复制null,一般为null
第三个参数:是一个ContentValues对象,它提供了一系列的put()方法重载,用于想ContentValues中添加数据
使用sql方式
db.execSQL("insert into Book (name,author,pages,price) values (?,?,?,?)", new String[]{"1", "1", "1", "1"});
更新数据
update
第一个参数:表名
第二个参数:是一个ContentValues对象
第三个参数,四个参数:约束更新某一行或某几行的数据,不指定的话默认就是更新所有行
使用sql方式
db.execSQL("update Book set price = ? where name = ?", new String[]{"3", "1"});
删除数据
delete
第一个参数:表名
第二个参数,三个参数:约束更新某一行或某几行的数据,不指定的话默认就是更新所有行
使用sql方式
db.execSQL("delete from Book where pages =?", new String[]{"1"});
查询数据
query
第一个参数:表名
第二个参数:指定查询哪几列,不指定查全部
第三个参数,四个参数:约束更新某一行或某几行的数据,不指定的话默认就是更新所有行
第五个参数:用于指定需要去group by的列,不指定则表示不对查询结果进行group by操作
第六个参数:用于对group by之后的数据进行进一步的过滤,不指定表示不进行过滤
第七个参数:用于指定查询结果的排序方式,不指定表示使用默认的排序方式。
使用sql方式
Cursor cursor= db.rawQuery("select * from Book", null);
0 条评论
下一页