您的位置:首页 > 移动开发 > Android开发

开源中国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来进行区分上传的类别。

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