一. 项目问题
1. Banner自动滚动,当Banner不可见时,多次切换Fragment,FC
原因:系统组件之间的冲突
规避:1) 当Banner可见时自动滚动
2) 当Banner不可见时停止自动滚动
延迟加载LazyLoad
参考ApiDemo中的List13.java
解决步骤:
1) 监听ListView的滚动事件
2) 非手动,并且可见才自动滚动
ww.23code.com
2. 布局事件穿透
场景:当使用FrameLayout或层叠布局时,上层布局中如果某处没有控件,
用户点击事件会透传到下层
解决:
二. 项目功能
1. 收藏(浏览历史)
分析
1) 收藏:详情页菜单
2) 查看:收藏片段中
3) 取消:详情页菜单
设计
数据持久化
1) InternalStorage
/data/data/packagename/files
2) ExternalStorage
SDCard /mnt/sdcard/
场景:文件较大 游戏数据包 图片缓存
3) SharePreferences
/data/data/packagename/share_prefs
场景:较小、键值对形式 用户设置
4) SQLite
/data/data/packagename/databases
场景:数据量较大、数据结构类似,频繁增/删/改/查
联系人、短信、图片、音频、视频
5) Web
URL
场景:用户在任何设备上都可以查看
分类:
1) 服务端
2) 客户端
复习:
SQLite使用步骤
1) 继承SQLiteOpenHelper
2) 创建Helper , helper.getWritableDatabase()
3) db.execSQL(sql)
db.rawQuery()
关系型数据库
面向对象
4) ORM 对象关系映射
db.insert()
db.delete()
db.update()
db.query()
2. ORM框架
Ormlite
GreenDao
ActiveAndroid
3. ActiveAndroid库的使用步骤:
1) 创建Application,初始化ActiveAndroid
2) 创建一个类,继承Model,设置与数据库表名和列名的映射
3) 通过save()方法保存数据
4. ActiveAndroid更多方法
1) 删除
2) 查
3) 修改
4) 批量插入
5) 设置数据库的文件名和版本号
所有的IO操作都是耗时的
5. 收藏功能
1) 编写数据库操作工具类
2) 在详情页菜单点击事件中调用
3) 从列表Fragment传递Story对象到详情页
6. 取消收藏
1) 在DBManager中增加删除收藏数据库的方法
2) 增加判断某条数据在数据库中是否存在的方法
3) 增加一个切换收藏状态的方法
4) 在详情页面调用
7. 使用同一个对象反复插入删除的问题
现象:第二次之后插入数据失败
原因:ActiveAndroid不支持同一个对象多次插入
解决:使用克隆对象
重写Story类的clone()方法
常见问题
1. 使用ActiveAndroid,创建Model时没有添加无参数的构造方法
constructor:构造方法
心得体会:
安卓的开发学习已经有3个多月了,从中已经学到了很多,也有很多的不懂,今天主要是用到了数据库,数据库也是之前所学到SQLite,要对数据库的增删改查要比较的熟悉,数据的持久化的常用的几种。不管是在那个项目都需要用到数据库,之前我所做的QQ音乐播放器,同样需要数据库对数据的保存还有修改。今天所需要的是知乎日报中收藏需要对数据的持久化。取消收藏是对数据进行删除,在删除的时候会遇到一个常见的问题就是,如果没有数据的话你进行删除会出现项目的运行错误。现在在高级阶段感觉每天所学到的东西真的每天都比一天多。需要对每天的知识点进行消化,积累多了两天就很多知识点就无法消化了。安卓的学习是无止境的很多的是需要坚持积累。