相关疑难解决方法(0)

Android StrictMode InstanceCountViolation

我正在运行我的应用程序,在开发中激活StrictMode,如下所示StrictMode用于较低平台版本, 并注意到一条错误消息,我不知道该考虑什么,也无法找到任何参考.

我得到一个android.os.StrictMode$InstanceCountViolation与价值观instanceslimit

实例= 3; 极限= 2

现在我想知道:

  • A)如何计算限制
  • B)如何实际发生这种违规行为,然后我会调查回避行动.

有任何想法吗?

android android-strictmode

48
推荐指数
3
解决办法
3万
查看次数

尽管多次打开子活动会导致InstanceCountViolation被破坏

我正在开发一个具有较低级别活动的项目,RecordView用于显示记录详细信息,例如图像,拍摄日期和时间以及纬度/经度信息.我试图实现一个位置监听器来获取首次拍摄图像的位置(按下按钮),而不是试图操纵相机进行地理标记和访问exif数据.这种方法有效 - 我得到我的位置以正确显示和更新数据库中的记录(返回视图以后显示从头开始的位置).但是,如果我退出当前RecordView然后再输入两个(任何组合),程序将崩溃并显示错误InstanceCountViolation(下面重新打印完整错误).当我覆盖RecordView每个被调用时显示的生命周期方法时,我们发现它在被再次调用之前被销毁.也就是说,RecordView在任何给定时间似乎不存在多于一个.

所以我的问题归结为:这个错误来自何处以及如何解决?

有什么东西在撒谎?LocationListener是否位于某处并导致问题?是不是可能会提供虚假错误的东西?

此外,我应该做可怕的硬编码修复,只是RecordView允许的实例限制?或者继续寻找另一种方法(作为一个例子,我试图通过PendingIntent.getBroadcast(...)呼叫请求单次更新)?

作为参考,此错误已出现在3.1的仿真器和实际的平板电脑上(Xoom,3.1).注释掉监听器更新代码似乎可以避免崩溃(编辑2:我似乎错了).与侦听器相关的代码如下(可以updateLocationRecordView类中的公共方法中找到).

    // Listener for the update request
    LocationListener locListener = new LocationListener() {
        // Store the currentRecord so the listener can update it after return
        Record currentRecord = record;
        GeoDatabase database = data;
        @Override
        public void onLocationChanged(Location location) {
            if (location != null) {
                myLocation = location;
                Log.d(TAG, "Location pulled as " + myLocation); …
Run Code Online (Sandbox Code Playgroud)

android android-strictmode

8
推荐指数
1
解决办法
2483
查看次数

Android StrictMode和堆转储

当Android的StrictMode检测到泄露的对象(例如活动)违规时,如果我能够在那个时刻捕获堆转储将会很有帮助.但是,没有明显的方法来配置它来执行此操作.有没有人知道可以用来实现它的一些技巧,例如说服系统在死刑被调用之前运行一段特定代码的方法?我不认为StrictMode会抛出异常,所以我不能使用这里描述的技巧:有没有办法让Android进程在OutOfMemoryError上产生堆转储?

android android-strictmode

5
推荐指数
1
解决办法
2044
查看次数

标签 统计

android ×3

android-strictmode ×3