转换到Google地图应用

时间:2016-12-09 18:29:10

标签: android google-maps google-play-services

描述

从我自己的应用中启动Google地图应用(使用“获取路线”Intent)时,我的应用中有时会显示部分或全部地图(~25-50%的时间)屏幕转换期间黑屏。以下是来自最小工作示例的视频:

真实设备

在过渡期间,由透明视图覆盖的矩形地图会变黑。请注意,虽然此MWE中不需要视图的透明部分,但它是我实际应用程序的必需部分。

enter image description here

仿真器

过渡期间整个地图变黑。

enter image description here

显示的Activity具有以下布局:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.google.android.gms.maps.MapView
        android:id="@+id/map_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <FrameLayout
        android:id="@+id/bottom_sheet"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="150dp"
            android:layout_marginTop="48dp"
            android:background="@android:color/white" />

        <Button
            android:id="@+id/button_action"
            android:layout_width="100dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center" />

    </FrameLayout>

</RelativeLayout>

和代码:

public class MapsActivity extends AppCompatActivity {

    private MapView mapView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);

        findViewById(R.id.button_action).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View view) {
                final Intent intent = new Intent(ACTION_VIEW, Uri.parse("google.navigation:q=42.3314,-83.0458"));
                intent.setPackage("com.google.android.apps.maps");
                startActivity(intent);
            }
        });

        mapView = (MapView) findViewById(R.id.map_view);
        mapView.onCreate(savedInstanceState);
    }

    // All the other overridden lifecycle methods, forwarded to mapView correctly.

}

该项目使用最新版本的Google Play服务(10.0.1)。完整代码可在GitHub上找到。

我已经阅读了许多地图变黑的遗留问题,但这些问题似乎与滚动的单个地图有关(例如https://code.google.com/p/gmaps-api-issues/issues/detail?id=4659)。

即使在MWE中,我也没有可靠的方法来重现这个问题,但它经常发生,很容易被观察和捕获。

设备规格似乎有所不同(较高规格的设备不太经常出现问题)。

问题

  • 这个问题的根本原因是什么?

  • 启动Google地图应用时,我应该(或不应该)做些什么来避免这种丑陋的行为?

0 个答案:

没有答案