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

来源:互联网 发布:c语言 字符和字节 编辑:程序博客网 时间:2024/06/01 08:40
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("注册失败,请检查您的网络");        }    }}
0 0
原创粉丝点击