4

我的问题是这样的,我正在尝试了解此跟踪的来源:

11-06 22:07:36.593 2744-3492/com.spot.spottester W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
11-06 22:07:36.594 2744-2744/com.spot.spottester W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation

每次我将屏幕从纵向旋转到横向时,我的 Android Studio logcat 上都会出现这些 StrictMode 行,反之亦然。我不明白为什么 logcat 表示“已抑制”,因为我认为 StrictMode 在我的主要活动中被激活(唯一的一个)

@Override
protected void onCreate(Bundle savedInstanceState) {

    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
            .detectAll()
            .penaltyLog()
            .build());

附加信息:当我使用地图时,我看到了这种严格的模式违规,FrameLayout 上的地图片段

<FrameLayout
    android:id="@+id/mapContainer"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:layout_gravity="center_horizontal"
    android:layout_weight="0.35">

    <fragment
        android:id="@+id/mapFragment"
        class="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</FrameLayout>

logcat 的附加行

11-07 08:47:39.495 32751-4156/com.spot.spottester I/dalvikvm-heap: Grow heap (frag case) to 15.568MB for 196624-byte allocation

11-07 08:47:40.217 32751-32751/com.spot.spottester I/Google Maps Android API: Google Play services package version: 9877036

谢谢大家!

4

1 回答 1

4

更新:现在从 Google Play 服务 10.2.0 开始修复:

好消息!您在 Google Play 服务 10.2 中看到“抑制 StrictMode 策略违规:StrictModeDiskReadViolation”日志的问题现已修复。安装在您的用户设备上的 Google Play 服务 APK 中的修复程序。

https://code.google.com/p/gmaps-api-issues/issues/detail?id=11077


原文:我在 logcat 中也看到了这些“禁止的 StrictMode 政策违规”消息 - 使用谷歌地图片段。即使我没有在我的应用程序中使用 StrictMode,抑制消息仍然会出现。

我认为这可能与 10 月份 Google 的这个问题修复有关,因为我最近才注意到它:

此问题现已在 Google Play Services 9.8 版本中得到修复。您应该不会再在日志中看到来自 Android Maps API 的 StrictMode 违规行为,因此您应该能够在 Activity 中重新启用 StrictMode。

https://code.google.com/p/gmaps-api-issues/issues/detail?id=10170

我的想法是他们通过将大堆栈跟踪输出写为单个“抑制”行来“修复”大堆栈跟踪输出......但他们也将其用于非严格模式应用程序。

于 2016-11-07T22:33:05.763 回答