第一步:
自定义日志工具,保证在上线的时候,不再打印log,保证了性能也保护了数据。
package com.dystu.newspro.debug;
import android.util.Log;
public class LogUtil {
public static final int VERBOSE = 1;
public static final int DEBUG = 2;
public static final int INFO = 3;
public static final int WARN = 4;
public static final int ERROR = 5;
public static final int NOTHING = 6;
public static final int LEVEL = VERBOSE;
public static void v(String tag, String msg) {
if (LEVEL <= VERBOSE) {
Log.v(tag, msg);
}
}
public static void d(String tag, String msg) {
if (LEVEL <= DEBUG) {
Log.d(tag, msg);
}
}
public static void i(String tag, String msg) {
if (LEVEL <= INFO) {
Log.i(tag, msg);
}
}
public static void w(String tag, String msg) {
if (LEVEL <= WARN) {
Log.w(tag, msg);
}
}
public static void e(String tag, String msg) {
if (LEVEL <= ERROR) {
Log.e(tag, msg);
}
}
}
第二步:
创建数据库:
package com.dystu.newspro.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class SQLHelper extends SQLiteOpenHelper {
public static final String DB_NAME = "database.db";
public static final int VERSION = 1;
public static final String TABLE_CHANNEL = "ChannelItem";//数据表
public static final String ID = "id";
public static final String NAME = "name";
public static final String ORDERID = "orderId";
public static final String SELECTED = "selected";
private final Context context;
public SQLHelper(Context context) {
super(context, DB_NAME, null, VERSION);
this.context = context;
}
public Context getContext(){
return context;
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "create table if not exists " + TABLE_CHANNEL
+ "(_id INTEGER PRIMARY KEY AUTOINCREMENT, " + ID
+ " INTEGER , " + NAME + " TEXT , " + ORDERID + " INTEGER , "
+ SELECTED + " TEXT)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onCreate(db);
}
}
第三步:
实现全局类(AndroidAnnotations和UIL见开源框架的介绍)
package com.dystu.newspro;
import java.io.File;
import org.androidannotations.annotations.EApplication;
import android.app.Application;
import android.content.Context;
import android.os.Environment;
import com.dystu.newspro.db.SQLHelper;
import com.dystu.newspro.debug.LogUtil;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.WeakMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import com.nostra13.universalimageloader.utils.StorageUtils;
@EApplication
public class App extends Application {
private static final String TAG = "com.dystu.newspro.App";
private static App mAppApplication;
private SQLHelper sqlHelper;
@Override
public void onCreate() {
super.onCreate();
mAppApplication = this;
initImageLoader(getApplicationContext());
}
public static App getApp() {
return mAppApplication;
}
public SQLHelper getSQLHelper() {
if (sqlHelper == null) {
sqlHelper = new SQLHelper(mAppApplication);
}
return sqlHelper;
}
@Override
public void onTerminate() {
if (sqlHelper != null) {
sqlHelper.close();
}
super.onTerminate();
}
/**
* 初始化ImageLoader
*
* @param applicationContext
*/
public void initImageLoader(Context applicationContext) {
String filePath = Environment.getExternalStorageDirectory()
+ "/Android/data/" + applicationContext.getPackageName()
+ "/cache/";
// 获取缓存的目录地址
File cacheDir = StorageUtils.getOwnCacheDirectory(applicationContext,
filePath);
LogUtil.d(TAG, cacheDir.getPath());
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
applicationContext)
.threadPoolSize(3)
.threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new WeakMemoryCache())
.memoryCacheSize(2 * 1024 * 1024)
.discCacheFileNameGenerator(new Md5FileNameGenerator())
.tasksProcessingOrder(QueueProcessingType.LIFO)
.discCache(new UnlimitedDiscCache(cacheDir))
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.imageDownloader(
new BaseImageDownloader(applicationContext, 5 * 1000,
30 * 1000)).writeDebugLogs().build();
ImageLoader.getInstance().init(config);// 全局初始化此配置
}
}
主要初始化UIL的配置和数据库。