首页 文章

MapFragment - 应用程序可能在其主线程上做了太多工作

提问于
浏览
1

我有以下错误

Skipped 40 frames!  The application may be doing too much work on its main thread.

研究过它......确保一切尽可能用Runnables以新线程开始 . 但不断得到错误 . 我几乎评论了我的所有代码,并在我开始一项新活动时仍然得到了它 . 然后我从我的第一个活动中评论了这个mapfragment,并且错误消失了 . So the error is caused by following piece of code:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="com.google.android.gms.maps.MapFragment"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    />

我从谷歌 Map API for Android docs得到了这个...有点奇怪,它没有优化 . 如何确保错误消失?我可以延迟mapFragment的加载吗?

一旦我打开活动一次......并再次重新打开它,警告就消失了,因为它已经在内存中了......但是我想拥有最好的优化应用程序 .

To avoid confusion 这是导致延迟的setContentView,因为mapFragment已加载到此函数中 . 延迟会引发警告 . 我的问题:如何加速setContentView,因此mapFragment预先加载或在活动打开后加载 .

2 回答

  • 0

    setContentView() slow with map fragment

    这包含答案 . 深深地隐藏在谷歌,但发现它!

  • 0

    试试这样吧

    getMapAsync(OnMapReadyCallback回调)您可以在GoogleMap准备就绪时设置侦听器

    public class MainActivity extends FragmentActivity
        implements OnMapReadyCallback {  
    ...  
    }  
    @Override  
    public void onMapReady(GoogleMap map) {
        map.addMarker(new MarkerOptions()
            .position(new LatLng(0, 0))
            .title("Marker"));
    }
    

相关问题