リストビュー、マップビュー、別のリスト、および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 でプロファイリングし、ほとんどの時間はメッセージのディスパッチ、レイアウト、および描画に費やされていました...したがって、ある種の再帰的なレイアウトまたは描画の問題が疑われます...
また、マップ アクティビティが停止されたときにマップ フラグメントを削除し、マップ アクティビティが開始されたときにマップ フラグメントを追加してみましたが、これで遅延の問題は解決しましたが、マップは状態を記憶せず、すべてのマーカーを失い、再表示が遅くなります。
別のフォローアップ:
これに対して私が見つけた唯一の解決策は、アクティビティが停止したときにフラグメントを削除し、再開時にフラグメントを追加し、カメラの位置も保存することです。また、フラグメントマネージャーとマップビューの両方でフラグメントを非表示にして再表示しようとしましたが、うまくいきませんでした。