安卓 定时任务本地数据库

安卓本地数据库

定时任务的启动

  //定时任务工具类使用 卸车
        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);
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值