(4.3.1.9)【项目一】跳转对话框+异步任务

package com.android.yunshi.dialog;
import com.android.yunshi.util.WSError;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.os.AsyncTask;
import android.widget.Toast;


//switcher到主界面间的“显示加载”的进度对话框的接口类,传递 显示进度条的成功和失败的文字


/*三种泛型类型分别代表“启动任务执行的输入参数”、“后台任务执行的进度”、“后台计算结果的类型”。在特定场合下,并不是所有类型都被使用,如果没有被使用,可以用java.lang.Void类型代替。 1.execute(Params... params),执行一个异步任务,需要我们在代码中调用此方法,触发异步任务的执行。 2.onPreExecute(),在execute(Params... params)被调用后立即执行,一般用来在执行后台任务前对UI做一些标记。 3.doInBackground(Params... params),在onPreExecute()完成后立即执行,用于执行较为费时的操作,此方法将接收输入参数和返回计算结果。在执行过程中可以调用publishProgress(Progress... values)来更新进度信息。 4.onProgressUpdate(Progress... values),在调用publishProgress(Progress... values)时,此方法被执行,直接将进度信息更新到UI组件上。 5.onPostExecute(Result result),当后台操作结束时,此方法将会被调用,计算结果将做为参数传递到此方法中,直接将结果显示到UI组件上。*/
public abstract class LoadingDialog <Input,Result> extends AsyncTask<Input, WSError, Result>{

    private ProgressDialog mProgressDialog;
    protected Activity mActivity;
    private int mLoadingMsg;
    private int mFailMsg;

    public LoadingDialog(Activity activity, int loadingMsg, int failMsg){
        this.mActivity = activity;
        this.mLoadingMsg = loadingMsg;
        this.mFailMsg = failMsg;
    }

    @Override
    protected abstract Result doInBackground(Input... params);

    @Override
    protected void onCancelled() {

         failMsg();

        super.onCancelled();
    }

    @Override
    protected void onPreExecute() {
        String title = "";
        String message = mActivity.getString(mLoadingMsg);//获取登录mseeage索引的的文本内容
        //提示,正在登录中,设置是否是不明确的状态,设置是否进度条是可以取消的,用于监听进度条被取消
        mProgressDialog = ProgressDialog.show(mActivity, title, message, true, false, new OnCancelListener(){

            public void onCancel(DialogInterface dialog) {
                LoadingDialog.this.cancel(true);        
            }});
        super.onPreExecute();
    }

    @Override
    protected void onPostExecute(Result result) {

        if(result != null){
            doStuffWithResult(result);//自定义方法,在子类中实现
        } else {//未获取到数据则显示错误信息
            failMsg();//自定义方法
        }
        mProgressDialog.dismiss();//关闭进度对话框
        super.onPostExecute(result);
    }



    @Override
    protected void onProgressUpdate(WSError... values) {
        mProgressDialog.dismiss();
        Toast.makeText(mActivity, values[0].getMessage(), Toast.LENGTH_SHORT).show();
        this.cancel(true);
        super.onProgressUpdate(values);
    }

    public abstract void doStuffWithResult(Result result);

    protected void failMsg(){
        Toast.makeText(mActivity, mFailMsg, Toast.LENGTH_SHORT).show();
    }

    protected void failMsg(String otherString){
        Toast.makeText(mActivity, otherString, Toast.LENGTH_SHORT).show();
    }

    public void doCancel()
    {
        mProgressDialog.dismiss();
    }


}
package com.android.yunshi.dialog;

import java.nio.MappedByteBuffer;
import java.util.HashMap;
import java.util.Map;

import com.android.yunshi.YunShiLoginActivity;
import com.android.yunshi.api.impl.YunshiGetApiImpl;
import com.android.yunshi.fun.YunshiFunctions;
import com.android.yunshi.util.ConstellationUtil;
import com.android.yunshi.util.WSError;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.util.Log;
import android.widget.Toast;


public class RegisterDialog extends LoadingDialog<String[],Map<String, String>>{
    private Intent mIntent;
    public RegisterDialog(Activity activity, int loadingMsg, int failMsg,Intent intent) {
        super(activity, loadingMsg, failMsg);
        mIntent = intent;
    }

    @Override
    protected Map<String, String> doInBackground(String[]... params) {
        String string = null;
        Map<String, String> map=new HashMap<String, String>();
        YunshiGetApiImpl  server = new YunshiGetApiImpl();
        String str[] = params[0]; 
        try {
            string = server.Register(mActivity, str[0], str[1], str[2], str[3], str[4], str[5], str[6],str[7], str[8], str[9], str[10], str[11], str[12], str[13]);
            YunshiFunctions fun=new YunshiFunctions();
            if(string==null){
                string="注册失败,请检查您的网络";
            }
            else {
                map=fun.ResolveResultString(string,"Register");

            }
        } catch (WSError e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return map;
    }

    @Override
    public void doStuffWithResult(Map<String, String> result) {
//      mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//      mActivity.startActivity(mIntent);
        //mark==YunshiDDXF
        if (result!=null&&!result.isEmpty()) {
            if(result.get("Status").equals("1")){
                Toast.makeText(mActivity, "注册成功,请登录", Toast.LENGTH_LONG).show();
                Intent intent = new Intent(mActivity, YunShiLoginActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.putExtra("UserName", result.get("S_Value"));
                mActivity.startActivity(intent);
                mActivity.finish();//结束当前activity
            }
            else{
                failMsg(result.get("S_Value"));
            }

        } else {
            failMsg("注册失败,请检查您的网络");
        }

    }

}

你可能感兴趣的:((4.3.1.9)【项目一】跳转对话框+异步任务)