Android tree应用框架.docx

上传人:b****1 文档编号:15152458 上传时间:2023-07-01 格式:DOCX 页数:33 大小:317.86KB
下载 相关 举报
Android tree应用框架.docx_第1页
第1页 / 共33页
Android tree应用框架.docx_第2页
第2页 / 共33页
Android tree应用框架.docx_第3页
第3页 / 共33页
Android tree应用框架.docx_第4页
第4页 / 共33页
Android tree应用框架.docx_第5页
第5页 / 共33页
Android tree应用框架.docx_第6页
第6页 / 共33页
Android tree应用框架.docx_第7页
第7页 / 共33页
Android tree应用框架.docx_第8页
第8页 / 共33页
Android tree应用框架.docx_第9页
第9页 / 共33页
Android tree应用框架.docx_第10页
第10页 / 共33页
Android tree应用框架.docx_第11页
第11页 / 共33页
Android tree应用框架.docx_第12页
第12页 / 共33页
Android tree应用框架.docx_第13页
第13页 / 共33页
Android tree应用框架.docx_第14页
第14页 / 共33页
Android tree应用框架.docx_第15页
第15页 / 共33页
Android tree应用框架.docx_第16页
第16页 / 共33页
Android tree应用框架.docx_第17页
第17页 / 共33页
Android tree应用框架.docx_第18页
第18页 / 共33页
Android tree应用框架.docx_第19页
第19页 / 共33页
Android tree应用框架.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Android tree应用框架.docx

《Android tree应用框架.docx》由会员分享,可在线阅读,更多相关《Android tree应用框架.docx(33页珍藏版)》请在冰点文库上搜索。

Android tree应用框架.docx

Androidtree应用框架

Androidtree应用框架

 

目录(?

)[-]

1简介

2内容

3结束

简介

一个好的Android应用开发框架,可以加快Android开发速度,今天笔记基于许多开源项目自写了一款Android应用框架。

内容

框架包括:

界面管理(Activity管理)、数据库操作(orm框架、加密等)、http交互、缓存管理、下载管理、路径管理、日志输出、网络管理、系统命令、加解密、stl容器、任务管理、奔溃管理、存储管理、其它辅助管理…。

解决思路如下:

界面管理:

使用Stack记录Activity的运行轨迹,并在每个Activity添加一个广播处理自定义事件。

[cpp]viewplaincopy

4privatestaticStackmActivityStack;//进行Activity运行记录

数据库管理:

对数据库的操作要求orm框架、加解密等,采用的是greendao和sqlcrypt开源项目解决。

http交互:

实现http交互方式有同步、异步操作。

采用的是android-async-http开源项目解决。

缓存管理:

实现缓存方式有内存缓存、磁盘缓存。

其中内存缓存只针对图片处理,磁盘缓存是针对某目录,实现的方式有:

先进先出、最大量、使用频率等。

下载管理:

下载管理方式有多线程下载、单线程下载。

路径管理:

简单的说就是对程序的目录管理,分图片、视频、音频、缓存目录等。

日志输出:

基于Log的管理(分调式、发布模式和文件输出、log输出)。

网络管理:

2G、3G、4G等联网方式不同的管理和监听。

系统命令:

直接命令运行。

加解密:

aes、base64、des、md5等加密方式。

stl容器:

重写stl部分容器。

任务管理:

基于AsyncTask任务的管理。

奔溃管理:

捕捉奔溃信息,并提供发送接口。

采用的是acra方法解决。

存储管理:

主要是SharedPreferences和Properties的管理。

其它辅助管理:

版本、内存、手机格式、字符串操作……等等。

项目如图:

效果如图:

+

 

相关测试代码:

5@Override

6protectedvoidonCreate(BundlesavedInstanceState){

7super.onCreate(savedInstanceState);

8setContentView(R.layout.test_tree);

9

10TFilePathManager.getInstance().initConfig(null);//默认目录(下载�?

图片、视频�?

缓存等目�?

11//优先考虑内存条,其次手机内存�?

12}

13

14publicvoidonClickTestPath(Viewview){//测试路径

15TFilePathManager.getInstance().initConfig(

16Environment.getExternalStorageDirectory().getPath()

17+File.pathSeparator+"test");

18

19//程序目录里面分了图片、缓存区、下载图、音频区、视频区

20TFilePathManager.getInstance().getAppPath();

21TFilePathManager.getInstance().getAudioPath();

22TFilePathManager.getInstance().getCachePath();

23TFilePathManager.getInstance().getDownloadPath();

24TFilePathManager.getInstance().getImagePath();

25}

26

27publicvoidonClickTestLog(Viewview){//测试日志

28TLog.enablePrintToFileLogger(true);

29for(inti=0;i<100;i++)

30TLog.i(TAG,"123456"+i);

31//TLog.release();//关闭程序可释�?

32

33//日志是放在程序目录下

34

35//TLog.enableIgnoreAll(enable);

36//TLog.enableIgnoreWarn(enable);

37}

38

39publicvoidonClickTestTActivity(Viewview){//测试TActivity

40Intentintent=newIntent();

41intent.setClass(this,TestTActivity.class);

42startActivity(intent);

43}

44

45publicvoidonClickTestHttp1(Viewview){//测试Http1

46Intentintent=newIntent();

47intent.setClass(this,TestHttp1.class);

48startActivity(intent);

49}

50

51publicvoidonClickTestHttp2(Viewview){//测试Http2

52Intentintent=newIntent();

53intent.setClass(this,TestHttp2.class);

54startActivity(intent);

55}

56

57publicvoidonClickTestThreadsdown(Viewview){//测试多线程下载

58Intentintent=newIntent();

59intent.setClass(this,TestDowns.class);

60startActivity(intent);

61}

62

63publicvoidonClickTestCrash(Viewview){//崩溃

64intresult=1/0;

65}

66

67publicvoidonClickTestSqlEncrypt(Viewview){//测试sql加密

68Intentintent=newIntent();

69intent.setClass(this,TestSqlEncrypt.class);

70startActivity(intent);

71}

72

73publicvoidonClickTestDAO(Viewview){//测试orm数据库

74Intentintent=newIntent();

75intent.setClass(this,TestDAO.class);

76startActivity(intent);

77}

78

79publicvoidonClickTestDB(Viewview){//测试Think数据库

80Intentintent=newIntent();

81intent.setClass(this,TestDB.class);

82startActivity(intent);

83}

84

85publicvoidonClickTestCache(Viewview){//测试缓存

86Intentintent=newIntent();

87intent.setClass(this,TestCache.class);

88startActivity(intent);

89}

90

91publicvoidonClickTConfig(Viewview){//测试配置信息

92TPreferenceConfig.getInstance().initConfig(this);

93TPropertiesConfig.getInstance().initConfig(this);

94

95TIConfigiConfig=TPreferenceConfig.getInstance();

96iConfig.setBoolean("123",true);

97booleanresult=iConfig.getBoolean("123",false);

98

99iConfig=TPropertiesConfig.getInstance();

100iConfig.setBoolean("1234",true);

101result=iConfig.getBoolean("1234",false);

102}

103

104publicvoidonClickEncryption(Viewview){//测试加密

105Stringsrc="banketree@";

106Stringencrypted="";

107Stringkey="banketree";

108

109try{

110encrypted=TAes.encrypt(key,src);

111StringtempString=TAes.decrypt(key,encrypted);

112

113encrypted=TBase64.encode(src.getBytes());

114tempString=TBase64.decode(encrypted).toString();

115

116encrypted=TDes.encrypt(key,src);

117tempString=TDes.decrypt(key,encrypted);

118TLog.i(this,tempString);

119}catch(Exceptione){

120e.printStackTrace();

121}

122}

123

124publicvoidonClickZip(Viewview){//测试解压缩

125try{

126TCompressUpressJar("");

127TCompressUpressZip("");

128TCompressUtils.uncompressJar("");

129TCompressUtils.uncompressZip("");

130}catch(Exceptione){

131e.printStackTrace();

132}

133}

奔溃处理回调:

134@Override

135publicvoidonAppCrash(StringcrashFile){

136

137TLog.d(TAG,"CreatingDialogfor"+crashFile);

138IntentdialogIntent=newIntent(this,TestCrash.class);

139dialogIntent.putExtra(TCrash.EXTRA_REPORT_FILE_NAME,crashFile);

140dialogIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

141startActivity(dialogIntent);

142}

缓存:

143mMemoryCacheSize=2*1024*1024;//2M

144mDiscCacheSize=2*1024*1024;//2M

145mDiscCacheFileCount=100;//一百个文件

146mMemoryCache=TCacheManager.createLruMemoryCache(mMemoryCacheSize);

147

148try{

149mDiscCache1=TCacheManager.createReserveDiscCache(TFilePathManager

150.getInstance().getCachePath(),"test");

151}catch(Exceptione){

152e.printStackTrace();

153}

154

155try{

156mDiscCache2=TCacheManager.createFileCountLimitedDiscCache(

157mDiscCacheFileCount,TFilePathManager.getInstance()

158.getCachePath());

159}catch(Exceptione){

160e.printStackTrace();

161}

 

162try{

163Drawabledemo=getResources().getDrawable(R.drawable.ic_launcher);

164Bitmapbitmap=((BitmapDrawable)demo).getBitmap();

165if(arg0==mTest1Button){

166mMemoryCache.put("123",bitmap);

167mMemoryCache.put("1234",bitmap);

168

169mMemoryCache.get("123");

170mMemoryCache.get("1234");

171}elseif(arg0==mTest2Button){

172mDiscCache1.put("123",mContext.getCacheDir());

173mDiscCache1.get("123");

174}elseif(arg0==mTest3Button){

175mDiscCache2.put("123",mContext.getCacheDir());

176mDiscCache2.get("123");

177}

178}catch(Exceptione){

179makeText(e.getMessage());

180}

Activity之间的通信:

181@Override

182publicvoidonClick(Viewarg0){

183if(testComparatorButton==arg0){

184Log.i("","");

185UIBroadcast.sentEvent(mContext,1001,1002,"");

186}

187}

188

189@Override

190publicvoidprocessEvent(Intentintent){

191super.processEvent(intent);

192intmainEvent=intent.getIntExtra(UIBroadcast.MAINEVENT,-1);

193intsubEvent=intent.getIntExtra(UIBroadcast.EVENT,-1);//

194

195makeText("哈哈触发�?

"+mainEvent+subEvent);//每个Activity可接收广播?

196}

Http同步异步请求:

 

197if(view==mCancelButton){

198mTAsyncHttpClient.cancelRequests(this,true);

199mTAsyncHttpClient.cancelAllRequests(true);

200}elseif(view==mGetButton){

201url="https:

//httpbin.org/get";

202mTAsyncHttpClient.get(url,newAsyncHttpResponseHandler(){

203

204@Override

205publicvoidonSuccess(intstatusCode,Header[]headers,

206byte[]responseBody){

207debugHeaders(headers);

208debugStatusCode(statusCode);

209debugResponse(newString(responseBody));

210}

211

212@Override

213publicvoidonFailure(intstatusCode,Header[]headers,

214byte[]responseBody,Throwableerror){

215debugHeaders(headers);

216debugStatusCode(statusCode);

217if(responseBody!

=null){

218debugResponse(newString(responseBody));

219}

220

221TLog.e(this,error.getMessage());

222}

223

224@Override

225publicvoidonProgress(intbytesWritten,inttotalSize){

226super.onProgress(bytesWritten,totalSize);

227}

228

229@Override

230publicvoidonRetry(intretryNo){

231makeText(String.format("Requestisretried,retryno.%d",

232retryNo));

233}

234});

235}elseif(view==mPostButton){

236url="http:

//httpbin.org/post";

237mTAsyncHttpClient.post(mContext,url,getRequestHeaders(),

238getRequestEntity(),null,newAsyncHttpResponseHandler(){

239

240@Override

241publicvoidonStart(){

242}

243

244@Override

245publicvoidonSuccess(intstatusCode,Header[]headers,

246byte[]response){

247debugHeaders(headers);

248debugStatusCode(statusCode);

249debugResponse(newString(response));

250}

251

252@Override

253publicvoidonFailure(intstatusCode,Header[]headers,

254byte[]errorResponse,Throwablee){

255debugHeaders(headers);

256debugStatusCode(statusCode);

257debugThrowable(e);

258if(errorResponse!

=null){

259debugResponse(newString(errorResponse));

260}

261}

262});

263

264}elseif(view==mPutButton){

265url="http:

//httpbin.org/put";

266

267mTAsyncHttpClient.put(this,url,getRequestHeaders(),

268getRequestEntity(),null,newAsyncHttpResponseHandler(){

269

270@Override

271publicvoidonStart(){

272}

273

274@Override

275publicvoidonSuccess(intstatusCode,Header[]headers,

276byte[]response){

277debugHeaders(headers);

278debugStatusCode(statusCode);

279debugResponse(newString(response));

280}

281

282@Override

283publicvoidonFailure(intstatusCode,Header[]headers,

284byte[]errorResponse,Throwablee)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2