一、启动时的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来进行区分上传的类别。
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.youkuaiyun.com/watermusicyes/article/details/47392905
825



被折叠的 条评论
为什么被折叠?



