开源中国android客户端源码分析-学习笔记1
2017-05-02 14:46
417 查看
一、启动时的spalsh界面
在应用启动的时候,出现一个启动的欢迎界面,在这个界面中完成的任务:
1、Log日志的上传
2、跳转到主界面
3、动画——在动画结束时执行上述两项操作
二、涉及到的java类文件
1、AppStart.java——整个应用的入口
2、LogUploadService.java——在AppStart开启,完成上一次记录在本地的日志的上传
3、MainActivity.java——程序的主界面
三、相关的java类文件的分析
1、AppStart的分析
在AppStart中通过一个动画来控制Splash界面中的图片优雅的展示出来,在动画结束的时候,完成两个动作:
1)启动Service,上传日志
2)跳转到程序的主界面
2、LogUploadService的分析
在AppStart中开启了一个服务LogUploadService用来上传应用程序的日志,采用的是startService的方式开启服务。
上传分为:上传日志upLoadLog和上传反馈意见feedback,根据report来进行区分上传的类别。
在服务开启后根据情况进行如下操作:
1、读取OSC本地文件夹下的日志信息
2、如果日志信息为空,服务停止——LogUploadService.this.stopSelf()
3、如果日志信息不为空,上传日志
在发生以下情况需要停止服务(执行LogUploadService.this.stopSelf()):
1、日志信息为空
2、日志上传成功
3、日志上传失败
3、MainActivity分析
启动主界面,需要在Manifest文件中进行配置
四、额外问题
1、在OnCreate方法中有一个防止第三方跳转出现双实例的代码
2、在onResume中有一系列的动作,在闪屏页检测是否是第一次安装,将曾经安装的残留缓存文件删除。
参考资料:
http://blog.csdn.net/watermusicyes/article/details/47392905
在应用启动的时候,出现一个启动的欢迎界面,在这个界面中完成的任务:
1、Log日志的上传
2、跳转到主界面
3、动画——在动画结束时执行上述两项操作
二、涉及到的java类文件
1、AppStart.java——整个应用的入口
2、LogUploadService.java——在AppStart开启,完成上一次记录在本地的日志的上传
3、MainActivity.java——程序的主界面
三、相关的java类文件的分析
1、AppStart的分析
在AppStart中通过一个动画来控制Splash界面中的图片优雅的展示出来,在动画结束的时候,完成两个动作:
1)启动Service,上传日志
2)跳转到程序的主界面
2、LogUploadService的分析
在AppStart中开启了一个服务LogUploadService用来上传应用程序的日志,采用的是startService的方式开启服务。
上传分为:上传日志upLoadLog和上传反馈意见feedback,根据report来进行区分上传的类别。
Intent uploadLog = new Intent(this,LogUploadService.class); startService(uploadLog);//实际上是调用onStartCommand()方法
在服务开启后根据情况进行如下操作:
1、读取OSC本地文件夹下的日志信息
2、如果日志信息为空,服务停止——LogUploadService.this.stopSelf()
3、如果日志信息不为空,上传日志
在发生以下情况需要停止服务(执行LogUploadService.this.stopSelf()):
1、日志信息为空
2、日志上传成功
3、日志上传失败
3、MainActivity分析
启动主界面,需要在Manifest文件中进行配置
四、额外问题
1、在OnCreate方法中有一个防止第三方跳转出现双实例的代码
// 防止第三方跳转时出现双实例 Activity aty = AppManager.getActivity(MainActivity.class); /*AppManager类是一个自定义的工具类,作用是将应用程序所有启动的Activity都添加到堆栈,最终退出应用程序时全部释放掉Activity*/ if (aty != null && !aty.isFinishing()) { finish(); }
2、在onResume中有一系列的动作,在闪屏页检测是否是第一次安装,将曾经安装的残留缓存文件删除。
protected void onResume() { super.onResume(); int cacheVersion = PreferenceHelper.readInt(this, "first_install","first_install", -1); int currentVersion = TDevice.getVersionCode(); if (cacheVersion < currentVersion) { PreferenceHelper.write(this, "first_install", "first_install",currentVersion); cleanImageCache(); } } private void cleanImageCache() { final File folder = FileUtils.getSaveFolder("OSChina/imagecache"); KJAsyncTask.execute(new Runnable() { @Override public void run() { for (File file : folder.listFiles()) { file.delete(); } } }); }
参考资料:
http://blog.csdn.net/watermusicyes/article/details/47392905
相关文章推荐
- 开源中国android客户端源码分析-学习笔记2
- 开源中国 OsChina Android 客户端源码分析(13)Fragment学习
- 开源中国 OsChina Android 客户端源码分析(5)摇一摇
- 开源中国 OsChina Android 客户端源码分析(10)双击退出程序
- 【开源中国Android客户端】源码分析(二)网络数据传输接口
- 开源中国 OsChina Android 客户端源码分析(6)拍照、图库、裁剪
- Android源码学习笔记1-短信发送流程分析
- Android之开源中国客户端源码分析(二)
- 开源中国 OsChina Android 客户端源码分析(3)可以拖拽的ScrollView
- 开源中国 OsChina Android 客户端源码分析(9)下载APK功能
- 开源中国 OsChina Android 客户端源码分析(12)清理缓存
- 开源中国 OsChina Android 客户端源码分析(7)二维码生成对话框
- 【开源中国Android客户端】源码分析 网络数据传输接口
- 开源中国 OsChina Android 客户端源码分析(8)数据库Sqlite
- 开源中国 OsChina Android 客户端源码分析(4)自定义对话框
- Androidpn学习笔记-客户端代码分析
- Android之开源中国客户端源码分析(一)
- 开源中国 OsChina Android 客户端源码分析(1)启动界面 app_start
- WCF学习笔记3(客户端内部运行机制分析)
- Android程序开发学习笔记系列——基础篇(附源码)