(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
- (4.3.1.9)【项目一】跳转对话框+异步任务
- (4.3.1.5)【项目一】子Fragment之NineGong和自定义的异步任务
- Tornado异步笔记(一)--- 异步任务
- Tornado异步笔记(一)--- 异步任务
- Android开发--AsyncTask异步任务(一)
- AsyncTask异步任务线程框架(一)
- 异步任务一:
- AsyncTask 异步任务 + ProgressDialog 进度条对话框
- (4.3.1.7)【项目一】子Fragment之对话框
- AsyncTask异步任务学习笔记(一、异步任务加载网络图片(多图))
- Android多线程与异步任务学习笔记(一)
- Android之线程使用AsyncTask异步任务(一)
- Android中的线程池和AsyncTask异步任务(一)
- 项目一任务2
- 项目一任务2
- 异步任务(AsyncTask)
- 异步任务(AsyncTask)
- 异步任务(AsyncTask)
- TJU-3860 Basex(模拟)
- 通讯录小结
- VMware无法与物理机连通Could not connect Ethernet0 to virtual network "VMnet8"完美解
- 【读书笔记】软件测试的艺术第2章
- 子控件 小结
- (4.3.1.9)【项目一】跳转对话框+异步任务
- 输入一个三位数,分离他的百位、十位和个位,反转后输出
- android 打开相机和相册
- hive简介
- 查看DNS地址
- 互质分数
- line-height机制详解
- 2012年5月SAT香港真题解析
- GuessBrithday