2

リストビュー、マップビュー、別のリスト、およびWebビューの4つのタブを保持するTabActivityを備えたAndroidアプリがあります。リスト ビューからアイテムをタップすると、別のアクティビティが開始されます。戻るボタンを押すと、タブ アクティビティに戻ります。

ただし、マップ ビュー タブにアクセスした後、リスト ビューから 2 番目のアクティビティに移動して [戻る] ボタンを押すと、約 3 ~ 4 秒ハングします。マップ ビューにアクセスすると、アプリを終了するまでこの問題は解決しません。

その他の注意事項:

  • マップ ビューは別のアクティビティを起動することもできます。この場合、戻るボタンは正常に機能します。問題が発生するのは、2 番目のアクティビティが起動されたときにマップ ビュー タブがアクティブでない場合のみです。
  • 2 つのデバイスでのテスト - 問題は Galaxy S で発生し、Nexys 7 では発生しません。
  • 私が見ることができるlogcatには明らかなものは何もありません。
  • アプリは Maps API V2 を使用しており、フラグメントをサポートするための lib をサポートしています。
  • アプリはモノで書かれています。

より詳しい情報。ライフサイクル イベントのマップ アクティビティにいくつかのログ メッセージを追加しました。

マップ タブから切り替える:

02-12 18:53:43.841 I/MAPTEST ( 5031): OnSaveInstanceState
02-12 18:53:43.857 I/MAPTEST ( 5031): OnPause

リスト ビュー タブから 2 番目のアクティビティを起動します。

02-12 18:54:06.900 I/MAPTEST ( 5031): OnSaveInstanceState
virtual void WebCore::Widget::show()
virtual void WebCore::Widget::show()
void WebCore::ScriptController::updatePlatformScriptObjects()
virtual void WebCore::Widget::show()
static bool WebCore::ResourceHandle::supportsBufferedData()
static bool WebCore::ResourceHandle::supportsBufferedData()
02-12 18:54:07.353 I/MAPTEST ( 5031): OnStop

2 番目のアクティビティから [戻る] ボタンを押す (つまり、一時停止が発生したとき):

-- Absolutely nothing in log cat --

地図タブに戻る:

02-12 18:54:59.056 I/MAPTEST ( 5031): OnRestart
02-12 18:54:59.060 I/MAPTEST ( 5031): OnStart
02-12 18:54:59.064 I/MAPTEST ( 5031): OnResume

アクティビティに戻ると 3 ~ 4 秒間ブロックされる原因は何ですか?

または、これを診断するためにさらに何ができますか?


より詳しい情報:

michal-z のコメントによると、DDMS でプロファイリングし、ほとんどの時間はメッセージのディスパッチ、レイアウト、および描画に費やされていました...したがって、ある種の再帰的なレイアウトまたは描画の問題が疑われます...

また、マップ アクティビティが停止されたときにマップ フラグメントを削除し、マップ アクティビティが開始されたときにマップ フラグメントを追加してみましたが、これで遅延の問題は解決しましたが、マップは状態を記憶せず、すべてのマーカーを失い、再表示が遅くなります。


別のフォローアップ:

これに対して私が見つけた唯一の解決策は、アクティビティが停止したときにフラグメントを削除し、再開時にフラグメントを追加し、カメラの位置も保存することです。また、フラグメントマネージャーとマップビューの両方でフラグメントを非表示にして再表示しようとしましたが、うまくいきませんでした。

4

0 に答える 0