我正在开发一款将谷歌地图(api v2)显示为片段的应用。当应用程序加载时,它会在显示地图之前显示一个空白的白色屏幕几秒钟。我已经使用了日志语句来查看延迟的位置,但我不知道它为什么这么慢。
这是我的onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "onCreate Start -------------------------------");
super.onCreate(savedInstanceState);
Log.i(TAG, "onCreate 1 -------------------------------");
setContentView(R.layout.activity_main);
Log.i(TAG, "onCreate 2 -------------------------------");
do_async_setup();
Log.i(TAG, "onCreate 3 -------------------------------");
prefs = getSharedPreferences(PREFS_NAME, 0);
prefs_editor = prefs.edit();
Log.i(TAG, "onCreate Finish -------------------------------");
这是输出。
01-20 10:05:28.802: I/HeadsUp(19544): onCreate Start -------------------------------
01-20 10:05:28.802: I/HeadsUp(19544): onCreate 1 -------------------------------
01-20 10:05:30.396: I/HeadsUp(19544): onCreate 2 -------------------------------
01-20 10:05:30.396: I/HeadsUp(19544): onCreate 3 -------------------------------
01-20 10:05:30.403: I/HeadsUp(19544): onCreate Finish -------------------------------
你可以看到setContentView有1.5秒的延迟。这是我的布局。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>
</RelativeLayout>
它看起来很糟糕,就像应用程序在加载时已冻结一样。我怎样才能加快速度或隐藏延迟?
感谢,
答案 0 :(得分:12)
这是使用GLSurfaceView的缺点,例如Android中的新地图v2。延迟是由GLSurfaceView的初始化引起的。请参阅此处http://code.google.com/p/gmaps-api-issues/issues/detail?id=4639,了解Googler附近的#5附近的简要说明以及帮助此问题的片段(一点点)。请为问题加注星标以提高其优先级。
答案 1 :(得分:2)
我发现如果你连接了一个调试会话,这可能会很慢,但是当你没有连接调试会话时,这通常是更可接受的速度。如果USB电缆断开连接运行得更快,那可能就是原因。