安卓本地数据库
定时任务的启动
//定时任务工具类使用 卸车
TimerTask unloadTimerTask = TimerTaskUtil.getInstance().unloadTimerTask(getApplicationContext());
TimerTaskUtil.getInstance().startTimerTask(0,1000,unloadTimerTask);
//定时任务工具类使用 装车
TimerTask barLoadTimerTask = TimerTaskUtil.getInstance().barLoadTimerTask(getApplicationContext());
TimerTaskUtil.getInstance().startTimerTask(0,1000,barLoadTimerTask);
//在需要地方数据插入
databaseManager.insertData("truck_loading",data);//将卸载数据放入本地数据库
定时任务
package com.kuaihuoyun.nktms.utils;
import android.content.Context;
import com.google.gson.Gson;
import com.kuaihuoyun.nktms.http.HttpRequestHelper;
import com.kuaihuoyun.nktms.http.request.BarScanUnloadRequest;
import com.kuaihuoyun.nktms.http.request.BarcodeScanAllotContinueRequest;
import com.kuaihuoyun.nktms.http.response.AllotModel;
import com.kuaihuoyun.nktms.http.response.BarcodeScanModel;
import com.kuaihuoyun.nktms.module.BarLoadModule;
import com.kuaihuoyun.nktms.ui.activity.base.DatabaseManager;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
public class TimerTaskUtil {
private Timer timer;
private TimerTask unloadTimerTask;
private TimerTask barLoadTimerTask;
private static class SingletonLoader {
private static final TimerTaskUtil INSTANCE = new TimerTaskUtil();
}
public static TimerTaskUtil getInstance() {
return TimerTaskUtil.SingletonLoader.INSTANCE;
}
public TimerTaskUtil() {
timer = new Timer();
}
public void startTimerTask(int delay, int period, TimerTask timerTask) {
timer.schedule(timerTask, delay, period);
}
public void stopTimerTask() {
timer.cancel();
}
public TimerTask unloadTimerTask(final Context context){
unloadTimerTask = new TimerTask() {
@Override
public void run() {
// 定时任务执行的代码
DatabaseManager databaseManager = DatabaseManager.getInstance(context);
List<Map<String, String>> unload = databaseManager.getDataList("unload");
String[] unloadArray = new String[unload.size()];
String batchId = null;
String batchNum = null;
int index = 0;
for (Map<String, String> stringStringMap : unload) {
String id = stringStringMap.get("id");
unloadArray[index++] = id;
System.out.println(stringStringMap.toString());
}
if(unload.size() != 0){
databaseManager.deleteDataByIds("unload", unloadArray);
for (Map<String, String> stringStringMap : unload) {
List<BarcodeScanModel> barcodeScanModelList = new ArrayList<>();
Gson gson = new Gson();
String field1 = stringStringMap.get("field1");
BarcodeScanModel barcodeScanModel = gson.fromJson(field1, BarcodeScanModel.class);
barcodeScanModelList.add(barcodeScanModel);
String field2 = stringStringMap.get("field2");
Map map = gson.fromJson(field2, Map.class);
batchId = (String)map.get("batchId");
batchNum = (String)map.get("batchNum");
//如果有数据发送请求到服务器
BarScanUnloadRequest request = new BarScanUnloadRequest();
request.batchId = new Integer(batchId);
request.batchNum = batchNum;
request.barcodeScanModels = barcodeScanModelList;
request.finish = false;
try {
HttpRequestHelper.requestAsync(request);
} catch (Throwable throwable) {
throwable.printStackTrace();
databaseManager.insertData("unload",stringStringMap);
// databaseManager.insertData("unload_failed",stringStringMap);
}
}
}
}
};
return unloadTimerTask;
}
//定时任务装车上传
public TimerTask barLoadTimerTask(final Context context){
barLoadTimerTask = new TimerTask() {
@Override
public void run() {
// 定时任务执行的代码
DatabaseManager databaseManager = DatabaseManager.getInstance(context);
List<Map<String, String>> truckLoading = databaseManager.getDataList("truck_loading");
String[] barLoadArray = new String[truckLoading.size()];
int index = 0;
for (Map<String, String> stringStringMap : truckLoading) {
String id = stringStringMap.get("id");
barLoadArray[index++] = id;
System.out.println(stringStringMap.toString());
}
if(truckLoading.size() != 0){
databaseManager.deleteDataByIds("truck_loading", barLoadArray);
for (Map<String, String> stringStringMap : truckLoading) {
List<BarcodeScanModel> barcodeScanModelList = new ArrayList<>();
Gson gson = new Gson();
String field1 = stringStringMap.get("field1");
List list= gson.fromJson(field1, List.class);
for (Object o : list) {
String barcodeScanModelString = gson.toJson(o);
BarcodeScanModel barcodeScanModel = gson.fromJson(barcodeScanModelString, BarcodeScanModel.class);
barcodeScanModelList.add(barcodeScanModel);
}
String field2 = stringStringMap.get("field2");
AllotModel allotModel = gson.fromJson(field2, AllotModel.class);
//如果有数据发送请求到服务器
BarcodeScanAllotContinueRequest request = new BarcodeScanAllotContinueRequest();
request.batchId = allotModel.id;
request.barcodeScanModels = barcodeScanModelList;
request.allotInfo = allotModel;
request.depart = false;
try {
HttpRequestHelper.requestAsync(request);
} catch (Throwable throwable) {
databaseManager.insertData("truck_loading",stringStringMap);
throwable.printStackTrace();
}
}
}
}
};
return barLoadTimerTask;
}
//装车定时任务关闭
public void barLoadStopTimer() {
if (barLoadTimerTask != null) {
barLoadTimerTask.cancel();
barLoadTimerTask = null;
}
}
//卸车定时任务关闭
public void unloadStopTimer() {
if (unloadTimerTask != null) {
unloadTimerTask.cancel();
unloadTimerTask = null;
}
}
}
写入本地数据库
package com.kuaihuoyun.nktms.ui.activity.base;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DatabaseManager {
private static DatabaseManager instance;
private SQLiteDatabase database;
private DatabaseManager(Context context) {
DatabaseHelper databaseHelper = new DatabaseHelper(context);
database = databaseHelper.getWritableDatabase();
}
public static synchronized DatabaseManager getInstance(Context context) {
if (instance == null) {
instance = new DatabaseManager(context);
}
return instance;
}
public void insertData(String tableName, Map<String,String> data) {
ContentValues values = new ContentValues();
values.put("field1", data.get("field1"));
values.put("field2", data.get("field2"));
database.insert(tableName, null, values);
}
public List<Map<String,String>> getDataList(String tableName) {
List<Map<String,String>> dataList = new ArrayList<>();
Cursor cursor = database.query(tableName, null, null, null, null, null, null);
while (cursor.moveToNext()) {
Map<String,String> data = new HashMap<>();
data.put("id",cursor.getString(cursor.getColumnIndex("_id")));
data.put("field1",cursor.getString(cursor.getColumnIndex("field1")));
data.put("field2",cursor.getString(cursor.getColumnIndex("field2")));
dataList.add(data);
}
cursor.close();
return dataList;
}
public void deleteDataByIds(String tableName,String [] whereArgs ) {
String temp = null;
if(whereArgs.length!=0){
StringBuffer tempString = new StringBuffer(",?");
for(int i=0;i< whereArgs.length-2 ;i++){
tempString.append(",?");
}
temp= tempString.toString();
}
String whereClause = "_id IN (?)";
whereClause = whereClause.replace("?","?"+temp);
database.delete(tableName, whereClause,whereArgs);
}
private static class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "database.db";
private static final int DATABASE_VERSION = 1;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE unload (_id INTEGER PRIMARY KEY AUTOINCREMENT, field1 TEXT, field2 TEXT)");
db.execSQL("CREATE TABLE unload_failed (_id INTEGER PRIMARY KEY AUTOINCREMENT, field1 TEXT, field2 TEXT)");
db.execSQL("CREATE TABLE truck_loading (_id INTEGER PRIMARY KEY AUTOINCREMENT, field1 TEXT, field2 TEXT)");
db.execSQL("CREATE TABLE truck_loading_failed (_id INTEGER PRIMARY KEY AUTOINCREMENT, field1 TEXT, field2 TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS unload");
db.execSQL("DROP TABLE IF EXISTS truck_loading");
onCreate(db);
}
}
}