[新手记录]在ProgressDialog中执行子线程取消的问题
来源:互联网 发布:网络瓶颈有哪些 编辑:程序博客网 时间:2024/06/07 10:38
做项目时用到通信部分大多都是要弹出加载框,然后开始数据传输,但是碰到网卡的时候,用户可能会取消登陆,不过按下返回键的话,当前的ProgressDialog会消失,但是数据可能已经通过接口传输到服务端了,我碰到的问题是取消后,服务端依旧会把数据返回到客户端,然后手持段会执行接收到数据的方法,我的解决办法利用全局的静态变量,重写cancel()方法,已登陆为例下面贴下相关代码
public class IProgressDialog extends ProgressDialog {public IProgressDialog(Context context) {super(context);// TODO Auto-generated constructor stub}@Overridepublic void cancel() {// TODO Auto-generated method stub<span style="font-family: Arial, Helvetica, sans-serif;">MyApplication</span><span style="font-family: Arial, Helvetica, sans-serif;">._LOADING = 2;</span>super.cancel();}}
public class RemoteLoginProgressDialog extends Thread {private IProgressDialog progressDialog = null; public RemoteLoginProgressDialog(Context context,String title,String msg,Runnable run){super(run);progressDialog = new IProgressDialog(context);progressDialog.setTitle(title);progressDialog.setMessage(msg);}@Overridepublic synchronized void start() {progressDialog.show();super.start();}@Overridepublic void run() {try{super.run();}catch(Exception e){e.printStackTrace();}finally{progressDialog.dismiss();}}
new RemoteLoginProgressDialog(this, "用户登录", "请稍等", new Runnable() {@Overridepublic void run() {FmcgApplication._LOADING = 1;UserService us = new UserService(LoginActivity.this);User user = RemoteUserService.login(username, pwd);if (!et_account.getText().toString().equals(user.username) || <span style="font-family: Arial, Helvetica, sans-serif;">MyApplication</span><span style="font-family: Arial, Helvetica, sans-serif;">._LOADING != 1) {</span>return;}//登陆的后续方法}}).start();
我用的这个方法是没法阻止数据的传输,只能在获取数据时判断是否取消了IProgressDialog的显示,谁有其他方法指点下,能在取消时阻止数据的传输就更好了
0 0
- [新手记录]在ProgressDialog中执行子线程取消的问题
- android ProgressBar ProgressDialog可以在子线程中更新的原理
- 取消线程的执行
- Toast 在子线程中使用的问题
- 在线程中执行AfxGetMainWnd()出错的问题
- 在子线程中 执行相关操作 请求网络
- 关于在子线程中在run方法执行完之后通知主线程进行操作的方法。(Toast在子线程中无法使用)
- C# 在子线程中创建不会阻塞执行的窗口
- GCD在子线程中更新UI出错记录
- 子线程中执行定时器
- objective 取消执行的延迟函数 -- 线程
- Android 子线程中Toast的问题
- 在执行器中取消任务
- Android中网络请求放在子线程中问题
- ProgressDialog返回键不能取消问题
- OkHttp 执行流程与为什么Callback在子线程中执行
- 在mfc的子线程中创建非模态的对话框出现的问题
- 在子线程中创建新的窗体,遇到的问题。
- GitHub Desktop下载安装问题
- 编绎报错objc_msgSend too many arguments to function call,expected 0, have3 解决方法
- AsyncTask的使用方法和理解
- HihoCoder 1246:王胖浩与环
- Android~Fragment~碎片化知识点
- [新手记录]在ProgressDialog中执行子线程取消的问题
- [LeetCode]Search for a Range
- java web第一个servlet配置过程
- 小胖说事40-----造成滑动试图卡顿原因之一:圆角
- 详解Android中AsyncTask的使用
- Loadrunner使用键盘快捷键
- Android 源码解析:EventBus
- Apache ActiveMQ 启动失败解决方法
- for循环计算元素坐标