2013-01-19 6 views
12

私はフラグメントとしてGoogleマップ(api v2)を表示するアプリを開発中です。アプリが読み込まれると、数秒間白い空白の画面が表示されてから地図が表示されます。私はログステートメントを使用して遅延がどこにあるかを見ていますが、なぜそれが遅いのか分かりません。setContentView()は地図フラグメントでゆっくりです

は、ここに私の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

Traceviewを使用して、問題がどこにあるかを具体的に把握します。 – CommonsWare

+0

@ CommonSWare、もし私がそれを読んでいるのであれば、それはログが私に言ったことを教えてくれる。 setContentViewは、onCreateメソッドの「時間」の約44%を使用しています。私が想定している3211.060はReal timeにミリ秒と書かれていますか?また、それはActionBarSherlockNative.setContentView()の理由は、それは非常にXMLなどの読み込みが遅いかもしれない?私がLayoutInflater.createViewFromTagに移動し、さらにいくつかのステップSupportMapFragment.onCreateView()をまだ98msにしてから、いくつかのGoogleのgmsコードに移動します。だからそれはGoogleマップの断片のように見えます。それは正しいようですか? – Rob

+0

さて、最も可能性の高い原因はマップなので、驚くことではないと思います。それは言われている、それはまたあなたがおそらくちょうど立ち往生していることを示唆している。あなたはこれをどのような種類のハードウェアで実行していますか? – CommonsWare

答えて

12

これは、そのようなアンドロイドの新しいマップV2とGLSurfaceViewを使用することの欠点です。この遅延は、GLSurfaceViewの初期化によって発生します。 Googleの投稿#5の近くの簡単な説明と、この問題(少し)を助けるためのスニペットはhttp://code.google.com/p/gmaps-api-issues/issues/detail?id=4639をご覧ください。優先順位を上げるために問題にスターを付けてください。

+0

ありがとう、それは私のためにそれを確認します。 – Rob

2

デバッグセッションが接続されているとこれはかなり遅くなることがありますが、そうでない場合は通常はより受け入れられる速度です。 USBケーブルを抜いたほうが速く動くと、おそらくそれが原因です。

関連する問題