注:本文包含AsyncHttpClient开源异步请求框架的使用
aSimpleCache轻量级的缓存使用
废话少说上代码
代码分析:
Manifest
权限
<
uses-permission
android:name=
"android.permission.INTERNET"
/>
<
uses-permission
android:name=
"android.permission.ACCESS_WIFI_STATE"
/>
<
uses-permission
android:name=
"android.permission.CHANGE_WIFI_STATE"
/>
<
uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<
uses-permission
android:name=
"android.permission.READ_EXTERNAL_STORAGE"
/>
Application中实例化ImageLoader:
public
class MyApplication
extends Application {
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
getApplicationContext())
.threadPriority(Thread. NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
. discCacheFileNameGenerator( new Md5FileNameGenerator())
.tasksProcessingOrder(QueueProcessingType. LIFO).build();
ImageLoader.getInstance().init(config);
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
getApplicationContext())
.threadPriority(Thread. NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
. discCacheFileNameGenerator( new Md5FileNameGenerator())
.tasksProcessingOrder(QueueProcessingType. LIFO).build();
ImageLoader.getInstance().init(config);
}
异步post 获取JSONObject并存到cache
private
void reqPost() {
// TODO Auto-generated method stub
AsyncHttpClient client = new AsyncHttpClient(); // ?????첽????Ŀͻ??˶???
String url = "http://101.200.178.223:8080/yicheng/customer/login.do"; // ????????ĵ?ַ
// ???????????ķ?װ?Ķ???
RequestParams params = new RequestParams();
params.put( "phone", "15683066139"); // ????????IJ?????Ͳ???ֵ
params.put( "passwd", "654321"); // ????????IJ?????Ͳ???
params.put( "Content-Type", "application/x-www-form-urlencoded");
params.put( "user-agent", "mobile_app");
// ִ??post????
client.post(url, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess( int statusCode, Header[] headers,
byte[] responseBody) {
if (statusCode == 200) {
tv_result.setText( new String(responseBody)); // ??????ʾ???ı?
try {
JSONObject js = new JSONObject( new String(responseBody));
JSONObject jb = js.optJSONObject( "customer");
Log.d( TAG, "JSON 对象" + jb.toString());
// 存入json对象
mCache.put( "jsonObject", jb);
ImageLoader.getInstance().displayImage( image_url,
iv_img);
// 访问网络代码
Message msg = new Message();
msg. what = HANDLER_SAVE_IMAGE;
handler.sendMessage(msg);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// TODO Auto-generated method stub
AsyncHttpClient client = new AsyncHttpClient(); // ?????첽????Ŀͻ??˶???
String url = "http://101.200.178.223:8080/yicheng/customer/login.do"; // ????????ĵ?ַ
// ???????????ķ?װ?Ķ???
RequestParams params = new RequestParams();
params.put( "phone", "15683066139"); // ????????IJ?????Ͳ???ֵ
params.put( "passwd", "654321"); // ????????IJ?????Ͳ???
params.put( "Content-Type", "application/x-www-form-urlencoded");
params.put( "user-agent", "mobile_app");
// ִ??post????
client.post(url, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess( int statusCode, Header[] headers,
byte[] responseBody) {
if (statusCode == 200) {
tv_result.setText( new String(responseBody)); // ??????ʾ???ı?
try {
JSONObject js = new JSONObject( new String(responseBody));
JSONObject jb = js.optJSONObject( "customer");
Log.d( TAG, "JSON 对象" + jb.toString());
// 存入json对象
mCache.put( "jsonObject", jb);
ImageLoader.getInstance().displayImage( image_url,
iv_img);
// 访问网络代码
Message msg = new Message();
msg. what = HANDLER_SAVE_IMAGE;
handler.sendMessage(msg);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
获取Bitmap对象并存如cache
/**
* 根据图片的url路径获得Bitmap对象
*
* @param url
* @return
*/
private void SaveBitmap(String url) {
new Thread( new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
bitmap = ImageLoader.getInstance().loadImageSync( image_url);
Log.d( TAG, "存入的bitmap" + bitmap);
mCache.put( "bitmap", bitmap);
}
}).start();
* 根据图片的url路径获得Bitmap对象
*
* @param url
* @return
*/
private void SaveBitmap(String url) {
new Thread( new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
bitmap = ImageLoader.getInstance().loadImageSync( image_url);
Log.d( TAG, "存入的bitmap" + bitmap);
mCache.put( "bitmap", bitmap);
}
}).start();
}
使用存入的JSONObject和Bitmap对象
private
void getCacheData() {
// 显示存入的json对象
JSONObject json = mCache.getAsJSONObject( "jsonObject");
if (json != null) {
tv_result.setText( "" + json.toString());
} else {
return;
}
// 显示图片的bitmap
bitmap = mCache.getAsBitmap( "bitmap");
Log.d( TAG, "取出的bitmap" + bitmap);
if ( bitmap != null) {
iv_img.setImageBitmap( bitmap);
}
// 显示存入的json对象
JSONObject json = mCache.getAsJSONObject( "jsonObject");
if (json != null) {
tv_result.setText( "" + json.toString());
} else {
return;
}
// 显示图片的bitmap
bitmap = mCache.getAsBitmap( "bitmap");
Log.d( TAG, "取出的bitmap" + bitmap);
if ( bitmap != null) {
iv_img.setImageBitmap( bitmap);
}
}