关于轮播图中Handler迭代延时调用自己应用退出无法销毁问题
来源:互联网 发布:阿里云创建快照 编辑:程序博客网 时间:2024/05/21 09:39
在制作轮播图中常常用handler去延时调用自己本身run()的方法达到定时刷新的目的
如:
class HomeTask implements Runnable { private void start() { UIUtils.getHanHandlerdler().removeCallbacksAndMessages(null);// 取消handler的所有消息//UIUtils.getHandler()是封装好的可以获得一个Handler的方法 UIUtils.getHandler().postDelayed(this, 3000); } @Override public void run() { int currentItem = pager.getCurrentItem();//page是viewpage对象 pager.setCurrentItem(currentItem + 1); UIUtils.getHandler().postDelayed(this, 3000); System.out.println("下一个图");//根据日志判断退出后该方法是不是还在执行 } } }
当我在new HomeTask().start();
后,viewpage便开始循环轮播,但是你会发现即使你退出应用该循环效果也会一直执行下去,从而很可能应用也并没有真的退出,我们要做到应用退出后(或activity Finnish掉)就不在循环,我采取的方法是在调用handler的class里想办法得到一个包含要调用的activity,这样就可以用Activity.isFinishing()方法来判断activity是不是在结束了
google翻译这么说的:
检查这个活动(Activity)是否正在完成(isFinishing),无论是因为您在其上调用了{@link #finish}或其他人请求完成。 这通常用在{@link #onPause}中,以确定活动是暂停还是完全完成。
修改后的类为
class HomeTask implements Runnable { private void start() { UIUtils.getHandler().removeCallbacksAndMessages(null);// 取消所有消息 UIUtils.getHandler().postDelayed(this, 3000); } @Override public void run() { int currentItem = pager.getCurrentItem(); pager.setCurrentItem(currentItem + 1); if (!mActivity.isFinishing()) { UIUtils.getHandler().postDelayed(this, 3000); System.out.println("下一个图"); } } }
阅读全文
0 0
- 关于轮播图中Handler迭代延时调用自己应用退出无法销毁问题
- 关于Ajax调用Handler中的Server.MapPath提示无法映射的问题!
- 关于android应用退出的问题
- 关于android应用退出的问题
- 关于android应用退出的问题
- 关于getAllNetworkInfo()无法调用问题
- Android 应用退出后销毁apk进程
- android退出应用销毁所有的activity
- notifyListener无法调用handler
- 关于Handler的延时发送消息
- DestroyWindow无法销毁的问题
- 调用Shell脚本无法正常退出的问题处理
- 联想A766开发的应用无法退出的问题
- excel无法退出问题
- 关于session的销毁问题
- 关于Python迭代问题的解释
- 关于程序退出无法关闭所有界面问题 通过广播使Android程序完全退出
- 关于延时打印的问题
- 个人宏工作簿PERSONAL.XLSB 保存位置 启动加载项
- 在Android Studio中如何安装Genymotion模拟器插件
- wifi(rtl8188eu)移植及调试笔记
- MySQL数据库优化
- Android 彻底弄懂Activity四大启动模式 和taskAffinity属性详解 intentFlag 图文解析
- 关于轮播图中Handler迭代延时调用自己应用退出无法销毁问题
- reduce函数python
- 爬虫编码问题
- 循环的总结
- Xfce安装与移植
- 关于c++中的scanf函数中的一些不易发现的注意点
- selenium + python 基础
- JS函数
- 指数循环节 处理A^B 问题 Super A^B mod C + Calculation