android:
name="com.ta.TAApplication">
application必须配置以上格式
Activity必须继承TAActivity
ThinkAndroid使用方法:
关于ThinkAndroid的更多介绍,请点击这里
MVC模块
∙MVC模块:
实现视图与模型的分离。
getTAApplication().registerCommand(Rand,
TAIdentityCommand.class);
getTAApplication().registerCommand(Rand,
TAIdentityCommand.class);
TALogger.addLogger(newTAPrintToFileLogger());
TARequestrequest=newTARequest();
doCommand(Rand,request,newTAIResponseListener()
{
@Override
publicvoidonStart(TAResponseresponse)
{
//TODOAuto-generatedmethodstub
}
@Override
publicvoidonSuccess(TAResponseresponse)
{
//TODOAuto-generatedmethodstub
}
@Override
publicvoidonRuning(TAResponseresponse)
{
//TODOAuto-generatedmethodstub
}
@Override
publicvoidonFailure(TAResponseresponse)
{
//TODOAuto-generatedmethodstub
}
},false,true,true);
mand;
mon.TAIResponseListener;
mon.TARequest;
mon.TAResponse;
publicclassTAIdentityCommandextendsTACommand
{
@Override
protectedvoidexecuteCommand()
{
//TODOAuto-generatedmethodstub
TARequestrequest=getRequest();
TAResponseresponse=newTAResponse();
response.setTag(request.getTag());
response.setData(request.getData());
response.setActivityKey((String)request.getActivityKey());
response.setActivityKeyResID(request.getActivityKeyResID());
setResponse(response);
notifyListener(true);
}
protectedvoidnotifyListener(booleansuccess)
{
TAIResponseListenerresponseListener=getResponseListener();
if(responseListener!
=null)
{
onComandUpdate(command_success);
}
}
}
ioc模块使用方法:
∙完全注解方式就可以进行UI绑定、res中的资源的读取、以及对象的初始化。
publicclassThinkAndroidDemoActivityextendsTAActivity{
@TAInject
Entityentity;//目前只能对无参构造函数进行初始化
@@TAInject(id=R.string.app_name)
StringappNameString;
@TAInjectResource(id=R.attr.test)
int[]test;
@TAInjectView(id=R.id.add);
ButtonaddButton;
}
数据库模块
∙android中的orm框架,使用了线程池对sqlite进行操作。
publicclassThinkAndroidDemoActivityextendsTAActivity{
TASQLiteDatabasePoolsqlitePool=getTAApplication()
.getSQLiteDatabasePool();
TASQLiteDatabasesqliteDatabase=sqlitePool.getSQLiteDatabase();
//使用中
sqliteDatabase.insert(entity);
sqlitePool.returnSQLiteDatabase(sqliteDatabase);
}
Http模块使用方法:
异步get方法
AsyncHttpClientclient=newAsyncHttpClient();
client.get("newAsyncHttpResponseHandler()
{
@Override
publicvoidonSuccess(Stringcontent)
{
//TODOAuto-generatedmethodstub
super.onSuccess(content);
TALogger.d(LoginActivity.this,content);
}
@Override
publicvoidonStart()
{
//TODOAuto-generatedmethodstub
super.onStart();
}
@Override
publicvoidonFailure(Throwableerror)
{
//TODOAuto-generatedmethodstub
super.onFailure(error);
}
@Override
publicvoidonFinish()
{
//TODOAuto-generatedmethodstub
super.onFinish();
}
});
Http模块使用方法:
同步get方法
TASyncHttpClientclient=newTASyncHttpClient();
client.get("newAsyncHttpResponseHandler()
{
@Override
publicvoidonSuccess(Stringcontent)
{
//TODOAuto-generatedmethodstub
super.onSuccess(content);
TALogger.d(LoginActivity.this,content);
}
@Override
publicvoidonStart()
{
//TODOAuto-generatedmethodstub
super.onStart();
}
@Override
publicvoidonFailure(Throwableerror)
{
//TODOAuto-generatedmethodstub
super.onFailure(error);
}
@Override
publicvoidonFinish()
{
//TODOAuto-generatedmethodstub
super.onFinish();
}
});
使用http模块上传文件或者提交数据到服务器(post方法)
RequestParamsparams=newRequestParams();
params.put("username","white_cat");
params.put("password","123456");
params.put("email","2640017581@");
params.put("profile_picture",newFile("/mnt/sdcard/testpic.jpg"));//上传文件
params.put("profile_picture2",inputStream);//上传数据流
params.put("profile_picture3",newByteArrayInputStream(bytes));//提交字节流
client.post("newAsyncHttpResponseHandler()
{
@Override
publicvoidonSuccess(Stringcontent)
{
//TODOAuto-generatedmethodstub
super.onSuccess(content);
TALogger.d(LoginActivity.this,content);
}
@Override
publicvoidonStart()
{
//TODOAuto-generatedmethodstub
super.onStart();
}
@Override
publicvoidonFailure(Throwableerror)
{
//TODOAuto-generatedmethodstub
super.onFailure(error);
}
@Override
publicvoidonFinish()
{
//TODOAuto-generatedmethodstub
super.onFinish();
}
});
}
使用http下载文件:
∙支持断点续传,随时停止下载任务或者开始任务
AsyncHttpClientsyncHttpClient=newAsyncHttpClient();
FileHttpResponseHandlerfHandler=newFileHttpResponseHandler(
TAExternalOverFroyoUtils.getDiskCacheDir(TestActivity.this,
"sdfsdfsdf").getAbsolutePath())
{
@Override
publicvoidonProgress(Stringspeed,Stringprogress){
//TODOAuto-generatedmethodstub
super.onProgress(speed,progress);
TALogger.v(TestActivity.this,progress+"--------"+speed);}
@Override
publicvoidonFailure(Throwableerror){
//TODOAuto-generatedmethodstub
super.onFailure(error);}
@Override
publicvoidonSuccess(byte[]binaryData){
//TODOAuto-generatedmethodstub
super.onSuccess(binaryData);
TALogger.d(TestActivity.this,"kaishi8了");}};
syncHttpClient.download(
"
fHandler);
//停止
fHandler.setInterrupt(interrupt);
图片模块方法
∙imageview加载图片的时候无需考虑图片加载过程中出现的oom和android容器快速滑动时候出现的图片错位等现象。
packagecom.test;
importcom.ta.TAApplication;
importcom.ta.util.bitmap.TABitmapCacheWork;
importcom.ta.util.bitmap.TADownloadBitmapHandler;
importandroid.content.Context;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.widget.BaseAdapter;
importandroid.widget.ImageView;
publicclassAdapterextendsBaseAdapter
{
TABitmapCacheWorkimageFetcher;
ContextmContext;
publicAdapter(Contextcontext,TAApplicationapplication)
{
TADownloadBitmapHandlerdownloadBitmapFetcher=newTADownloadBitmapHandler(
context,100);
imageFetcher=newTABitmapCacheWork(context);
imageFetcher.setProcessDataHandler(downloadBitmapFetcher);
imageFetcher.setFileCache(application.getFileCache());
this.mContext=context;
}
@Override
publicintgetCount()
{
//TODOAuto-generatedmethodstub
returnImages.imageThumbUrls.length;
}
@Override
publicObjectgetItem(intposition)
{
//TODOAuto-generatedmethodstub
returnImages.imageThumbUrls[position];
}
@Override
publiclonggetItemId(intposition)
{
//TODOAuto-generatedmethodstub
returnposition;
}
@Override
publicViewgetView(intposition,ViewconvertView,ViewGroupparent)
{
//TODOAuto-generatedmethodstub
LayoutInflaterinflater=(LayoutInflater)mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewbaseView=inflater.inflate(R.layout.login_adapter,null);
finalImageViewimageView=(ImageView)baseView
.findViewById(R.id.imageView);
//加载图片
imageFetcher.loadFormCache(getItem(position),imageView);
returnbaseView;
}
}
使用
@TAInjectView(id=R.id.gridView)
GridViewgridView;
Adapteradapter=newAdapter(this,getTAApplication());
gridView.setAdapter(adapter);
缓存模块方法
∙很简单的实现缓存,以一个简单的文件缓存为例
∙下载处理类
packagecom.test.file;
importcom.ta.util.cache.TAProcessDataHandler;
//下载处理类
publicclassTAProcessStringHandlerextendsTAProcessDataHandler
{
@Override
publicbyte[]processData(Objectdata)
{
//TODOAuto-generatedmethodstub
StringmynameString="white_cat";
//这里对数据进行处理,如下载东西等等,转换为byte[]以供缓存存储使用
returnmynameString.getBytes();
}
}
∙缓存结果返回操作类
packagecom.test.file;
importandroid.widget.TextView;
importcom.ta.util.cache.TACallBackHandler;
publicclassTAStringCallBackHandlerextendsTACallBackHandler
{
@Override
publicvoidonStart(TextViewt,Objectdata)
{
//TODOAuto-generatedmethodstub
super.onStart(t,data);
}
@Override
publicvoidonSuccess(TextViewt,Objectdata,byte[]buffer)
{
//TODOAuto-generatedmethodstub
super.onSuccess(t,data,buffer);
}
@Override
publicvoidonFailure(TextViewt,Objectdata)
{
//TODOAuto-generatedmethodstub
super.onFailure(t,data);
}
}
∙程序调用
TAFileCacheWorktaFileCacheWork=newTAFileCacheWork();
taFileCacheWork.setFileCache(getTAApplication().getFileCach