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

时间:2015-08-14 03:18:20

标签: java android multithreading mapfragment

我遇到以下错误

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

对它进行了研究......确保一切尽可能使用Runnables以新线程开始。但不断得到错误。我几乎评论了我的所有代码,并在我开始一项新活动时仍然得到了它。然后我从我的第一个活动中评论了这个mapfragment,并且错误消失了。 因此错误是由以下代码引起的:

<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"
    />

我是从Google Maps API for Android docs得到的...有点奇怪,它没有优化。如何确保错误消失?我可以延迟mapFragment的负载吗?

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

避免混淆由于mapFragment已加载到此函数中,因此导致延迟的是setContentView。延迟会引发警告。我的问题:如何加速setContentView,因此mapFragment已预先加载或在活动打开后加载。

2 个答案:

答案 0 :(得分:0)

setContentView() slow with map fragment

这包含答案。深深隐藏在Google中,但发现了它!

答案 1 :(得分: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"));
}