Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MapFragment-应用程序可能在其主线程上做了太多工作_Java_Android_Multithreading_Mapfragment - Fatal编程技术网

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(只是上面粘贴的代码),您将看到它在主线程警告方面做了太多的工作。