我遇到以下错误
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已预先加载或在活动打开后加载。
答案 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"));
}