Java MapFragment-应用程序可能在其主线程上做了太多工作
我犯了以下错误Java MapFragment-应用程序可能在其主线程上做了太多工作,java,android,multithreading,mapfragment,Java,Android,Multithreading,Mapfragment,我犯了以下错误 Skipped 40 frames! The application may be doing too much work on its main thread. 关于它的研究。。。确保尽可能多地使用Runnables在新线程中启动所有内容。但是不断地出错。我几乎注释了我所有的代码,当我开始一个新的活动时,仍然得到了它。然后我对我第一次活动中的这个mapfragment进行了注释,错误就消失了因此错误是由以下代码引起的: <fragment xmlns:android=
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"
/>
这是我从谷歌地图API为Android文档得到的。。。有点奇怪,它没有得到优化。如何确保错误消失?我可以延迟mapFragment的加载吗
一旦我打开活动一次。。。再次打开它警告消失了,因为它已经在内存中。。但我希望有最好的优化应用程序
为避免混淆正是setContentView造成了延迟,因为mapFragment加载在此函数中。延迟导致抛出警告。我的问题:如何加快setContentView的速度,以便在活动打开后预加载或加载mapFragment。
这就是答案。被隐藏在谷歌的深处,但找到了
这就是答案。被隐藏在谷歌的深处,但找到了 像这样试试看
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"));
}
像这样试试
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"));
}
没有正在运行的代码。没有一行。只有视图的加载,才是片段xml导致了警告。如果我取消对代码的注释,那么我所有的代码都在不同的线程中,一个在异步任务中,这样就可以了you@LahiruPrasanna这是一个封闭源代码的项目。我只能展示我现在正在展示的部分。没有代码可显示。创建一个新的空项目,放入一个mapfragment(只是上面粘贴的代码),您将看到它在主线程警告上做了太多的工作。没有代码运行。没有一行。只有视图的加载,才是片段xml导致了警告。如果我取消对代码的注释,那么我所有的代码都在不同的线程中,一个在异步任务中,这样就可以了you@LahiruPrasanna这是一个封闭源代码的项目。我只能展示我现在正在展示的部分。没有代码可显示。创建一个新的空项目,放入一个mapfragment(只是上面粘贴的代码),您将看到它在主线程警告方面做了太多的工作。