Android程序设计:一个用于同步远程数据库数据异步类AsyncTask

一个用于同步远程数据库数据异步类AsyncTask

此类省略某些业务代码:

package com.abc.splashdemo;

//import ...;

import android.os.AsyncTask;

public class SyncCaseAsyncTask extends AsyncTask<String, Integer, String> {

    public interface onSyncCompleted {
        public void SyncCompleted();
    }

    private List<Case>  listCases   = new ArrayList<Case>();
    private onSyncCompleted mOnSyncCompleted    = null;

    public SyncCaseAsyncTask() {

    }

    public void addCase(String strCaseGUID) {
        //..
    }

    public void addCase(Case cs) {
        //..
    }

    public void clear() {
        listCases.clear();
    }

    public void setOnSyncCompleted(onSyncCompleted onSyncCompletedEventHandler) {
        mOnSyncCompleted = onSyncCompletedEventHandler;
    }

    private boolean checkIsExist(String strCaseGUID) {
        boolean rtn = false;
        //..
        return rtn;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        //..
    }

    @Override
    protected String doInBackground(String... params) {
        if (listCases.size() > 0) {
            //..
            updateCase2Server(cs);
            //..
            return "同步完畢";
        } else {
            return "沒有參數";
        }
    }

    private void updateCase2Server(Case cs) {
        //..
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        if (mOnSyncCompleted != null) {
            mOnSyncCompleted.SyncCompleted();
        }
    }

    @Override
    protected void onCancelled() {
        super.onCancelled();

    }

}

UI Activity的调用方法:

//--初始化--
private SyncCaseAsyncTask   caseSyncTask    = new SyncCaseAsyncTask();
//--增加事件处理--
    caseSyncTask.setOnSyncCompleted(new onSyncCompleted() {

        @Override
        public void SyncCompleted() {
            showMsg("--完成同步哦--");
            caseSyncTask.clear();
        }
    });

//--调用--
    if (caseSyncTask != null) {
        caseSyncTask.addCase(new Case);
        caseSyncTask.execute();
    }

另外一个调用方法:可以多次调用,不过要等待异步执行完毕后,才从新手动执行,否则需要加一个
stopAyncTaskRunning(); 取消或者停止异步。

if (caseSyncTask == null) {
    caseSyncTask = new SyncCaseAsyncTask();
    caseSyncTask.addCase(mDatas.get(mPosition));
    caseSyncTask.setOnSyncCompleted(SyncCompletedEventHandler);
    caseSyncTask.execute();
}

SyncCompletedEventHandler = new onSyncCompleted() {
    @Override
    public void SyncCompleted() {
        showMsg("--完成同步哦--");
        caseSyncTask.clear();
        caseSyncTask = null;
    }
};


private void stopAyncTaskRunning() { 
    if (caseSyncTask != null && caseSyncTask .getStatus() == AsyncTask.Status.RUNNING) {  
        caseSyncTask .cancel(true);
        //if task is still running, stop it;  
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值