Android并发修改异常:java.util.ConcurrentModificationException

1.异常原因:
网上很多出现并发修改异常的情况都是和集合有关,而我的情况是在将Activity清除出栈的时候出现的异常,其他的情况暂未遇到,碰到再更新。

2.分析解决:
我在之前的《 如何在本Activity页面退出后回到首页或者指定的Activity入口》中提到会出现并发修改异常的情况:我从A 主页--> B --> C --> D 页面,当想结束当前页面,直接回到A页面时,就需要将B、C 清除出任务栈,但在清除时若只是finish当前页面显然是不能直接回到A页面的,直接跳转的方式更不可取,会出现很多个Activity,造成很多问题。用我在该文内的工具类时,必须按顺序先清除C,再清除B;若中间BC不清,或者只有C忘记清除的情况下都会造成异常 java.util.ConcurrentModificationException。(注:这里只是举个例子,这样操作就会造成并发修改异常。)

3.个人理解(此部分仅供参考,纯属个人经验之谈,未必准确。):
以上造成并发修改异常的原因主要与activity的任务栈有关(具体任务栈原理,请大家自行找资料学习)。根据任务栈“后进先出”的特点,D处在当前任务栈的栈顶,想找到A,必须按顺序清除中间的C、B;不能跳过B、C直接找到A,更不可能跳过C去直接清除B。对任务栈内的元素进行操作,需理解其原理,根据其特点进行添加或者删除操作,避免发生类似的异常java.util.ConcurrentModificationException。

4.出现异常的部分代码示例:(示例全部代码)
/**
 * @author 诺诺
 * 
 */
public class EActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        AppManager.getAppManager().addActivity(this);
        TextView tv = (TextView) findViewById(R.id.tv);
        tv.setText("返回首页");
        tv.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                AppManager.getAppManager().finishActivity(DActivity.class);
                // AppManager.getAppManager().finishActivity(CActivity.class);
                AppManager.getAppManager().finishActivity(BActivity.class);
                finish();
            }
        });
    }
}
————————————————
版权声明:本文为CSDN博主「Promise Sun」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sun_promise/article/details/43704515

更多相关文章

  1. Android(安卓)应用安装过程分析
  2. 使用mapbar 地图sdk要关闭硬件加速
  3. Android开发05—Android常用高级控件(下)
  4. 初识Android(安卓)制作一个简单的记账本
  5. Android中对多媒体操作阶段总结
  6. Android里webviewActivity一般功能实现
  7. [转]Android中Matrix的pre post set方法理解
  8. 【Android不太基础】换个思路来监听home键
  9. Android(安卓)Jetpack - 使用 Navigation 管理页面跳转

随机推荐

  1. 内存泄漏,关于异步回调导致的内存泄漏,使用
  2. Android BroadcastReceiver(广播)实现消
  3. Android官方架构组件Paging:分页库的设计
  4. Android隐藏状态栏 全屏
  5. android中JNI使用探究
  6. [Android Studio 权威教程]打包、生成jks密
  7. Android和iPhone应用程序界面布局示例
  8. 详述Google针对Android平板App发布的十大
  9. Android平台中的安全编程
  10. Android studio Gradle home can not be