一、前期准备
1、主要完成的功能
①点击登录跳转到视频登录界面
②点击视频设置,跳转到视频设置界面
③分享功能
④生成二维码
⑤版本更新
2、思路点拨
①如何实现用户信息管理?
一种是将用户信息存在application里面,但其实这种方式并不好,因为application是需要初始化很多东西的,尤其是很多第三方组件,在application创建的时候就回去初始化很多第三方sdk,如果再把用户信息也堆进去,那么这个类就复杂了,所以不应该将用户信息保存到application中。那么用户信息应该放在哪里呢?application对象就是一个全局单例对象,那么我们能不能自己创建一个用户信息管理的单例对象?用这个对象保存用户信息以及删除用户信息等等。这样是可以的。
②如何将信息生成二维码?
前面讲解了通过zxing去扫描二维码,同时zxing也可以生成二维码,只需要调用zxing相应的方法就可以。
③版本更新原理是什么?
版本更新的原理就是文件的下载,而下载的这个文件就是对应的apk。下载完以后调用Android的安装程序,将apk安装到手机上,替换当前的版本即可。
3、相关知识
①局部广播LocalBroadcast是在api14以后提出来的一个类,它放在support包中,主要用来替代应用内的全局广播的使用。
②sharedpreference:整个应用的配置文件
二、视频播放设置流程
1、
2、创建设置类并初始化相应的组件
3、sharedpreference封装
①单例模式获取实例
这里的application用的是ImoocApplication.getInstance()而不是具体的activity。实际开发中,能用application作为context的绝不用具体的activity或者service等等,这样可以极大地减少内存泄漏的风险。
②提供get、set方法
三、视频播放设置功能开发
初始化对应控件,点击按钮后,保存到sharedpreference,修改CheckBox的状态更新界面
四、自动更新
1、
2、
3、更新组件
service执行完onCreate()方法后会执行onStartCommand()方法,在onStartCommand()方法中会启动下载器startDownload()
notification中使用的NotificationCompat这个兼容包,它会根据不同版本自动完成适配
下载完成后,完成安装
在下载的时候主要将下载的url和下载的地址封装到request中,请求就是一个runnable,并将请求添加到线程池中。就是一个下载为什么要添加到线程池中呢?这里主要使用线程池对线程生命周期管理的优势。用线程会减少僵尸线程的出现。
五、登录及用户信息管理开发流程
1、
2、
创建activity并初始化控件
设置点击事件
发送登录请求成功后拿到用户信息,然后保存
发送登录广播
注:局部广播
其实就是一个普通的广播,和基本的广播使用方式类似
3、接收广播,处理登录成功的请求
六、创建二维码