本文实例讲述了Android中断线程的处理方法。分享给大家供大家参考。具体方法如下:
我现在对一个用户注册的功能
1.用ProgressDialog将当前页面设成不可操作(保留返回键 退出ProgressDialog)
2.用一个线程clientThread执行数据的提交和返回
问题:考虑到ProgressDialog运行过程中,返回键的操作,应该终止clientThread的运行。
代码如下,感兴趣的朋友可以参考运行一下,以便得出更好的解决办法。
btn_register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if(doBeforeSubmit()){ try { Log.v(TAG, "clientThread prepare01。。。:"+Thread.interrupted()); clienThread=new Thread(){ public void run() { try { Log.v(TAG, "clientThread prepare02。。。:"+Thread.interrupted()); while (!Thread.interrupted()) { Log.v(TAG, "clientThread starting。。。"); MeApiCall meApiCall=new MeApiCallImpl(); Me me=new Me(); me.setMeEmail(et_register_account.getText().toString().trim()); me.setMePwd(et_register_pwd.getText().toString().trim()); me.setMeName(et_register_nickName.getText().toString().trim()); Log.v(TAG, "clientThread data loaded。。。"); meApiCall.register(me); Log.v(TAG, "clientThread callback。。。"); handler.sendEmptyMessage(AppConfig.Register.SUCCESS_MSG); clienThread.interrupt(); //中断线程 } } catch (InterruptedException e) { // TODO: handle exception Log.v(TAG, "clientThread is interrupt"); }catch (Exception e) { // TODO Auto-generated catch block Log.v(TAG, "exception: "+e.getMessage()); handler.sendEmptyMessage(AppConfig.Register.FAIL_OTHER_MSG); e.printStackTrace(); } }; }; Log.v(TAG, "progressDialog prepare01。。。:"); progressDialog=ProgressDialog.show(Register.this, "", "正在获取....", true, true, new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { // TODO Auto-generated method stub try { clienThread.interrupt(); Log.v(TAG, "interrupt is success!"); } catch (Exception e) { // TODO Auto-generated catch block Log.v(TAG, "interrupt is fail!"); e.printStackTrace(); } } } ); Log.v(TAG, "clientThread prepareing_end。。。"); clienThread.start(); //Log.v(TAG, "clientThread prepareing_end。。。"); } catch (Exception e) { // TODO Auto-generated catch block Log.v(TAG, e.getMessage()+" 00"); e.printStackTrace(); } } } });
希望本文所述对大家的Android程序设计有所帮助。
本文向大家介绍全面总结Android中线程的异步处理方式,包括了全面总结Android中线程的异步处理方式的使用技巧和注意事项,需要的朋友参考一下 一、概述 Handler 、 Looper 、Message 这三者都与Android异步消息处理线程相关的概念。那么什么叫异步消息处理线程呢? 异步消息处理线程启动后会进入一个无限的循环体之中,每循环一次,从其内部的消息队列中取出一个消息,然后回调相
由于使用stop()方法停止线程非常的暴力,人家线程运行的好好的,突然就把人家杀死了,线程占用的锁被强制释放,极易导致数据的不一致性。因此,提出了一种温和的方式:请求另外一个线程不要再执行了,这就是中断方式。 假设某个线程要不停地处理某件事情(比如 i 一直自增),但是还有个要求:在处理事情前,先要检查下这个线程是否被中断,如果已经被中断,处理就应该结束。 public class Run {
各位。我正在为一个编程课做一个游戏,由两条蛇组成,它们朝相反的方向走在一条边界上。它们需要阻挡障碍物,我使用协调使它们不会相互对抗。这意味着第二个尝试访问细胞,需要等到第一个解锁细胞。我已经在这个网站上阅读了很多主题,但我仍然没有找到解决问题的方法。 现在我已经看到蛇在板上四处移动,并在障碍物中阻塞。下面是我的两大问题,我非常感谢您的帮助: 1-有特定的情况,例如,两条蛇走paralell,当他们
在 linux 内核中你会发现很多关于中断和异常处理的话题 中断和中断处理 Part 1. - 描述中断处理主题 深入 Linux 内核中的中断 - 这部分开始描述和初步步骤相关的中断和异常处理。 初步中断处理 - 描述初步中断处理。 中断处理 - fourth part describes first non-early interrupt handlers. 异常处理的实现 - 一些异常处理的
进入中断处理流程 接下来,我们将要手动触发一个 Trap(ebreak),并且进入中断处理流程。 开启中断 为了让硬件能够找到我们编写的 __interrupt 入口,在操作系统初始化时,需要将其写入 stvec 寄存器中: os/src/interrupt/handler.rs use super::context::Context; use riscv::register::stvec; g
我想在我的Android应用程序中处理位图——位图可能很大,所以我使用多线程来执行更快的操作。以下是我的代码(Runnable child的一部分): 当我只使用池中的一个线程时,一切正常。不幸的是,当我使用的线程数等于处理器的内核数(在我的设备中为4)时,结果如下(对于灰度过滤器): 有时看起来像: bitmap.get像素(...)不起作用,因为输出中有黑线 bitmap.set像素(...)