我在Android中編寫一個啓動器,這裏是我一直試圖解決一段時間沒有運氣的問題。PackageManager.queryIntentActivities()返回不完整的列表?
我有以下代碼來查詢我的啓動程序剛開始時運行的所有活動,例如onResume()
。
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List<ResolveInfo> infos = packageManager.queryIntentActivities(mainIntent, 0);
for (final ResolveInfo info : infos) {
// create my own recrord for each activity
}
的問題是,如果我設置我的啓動爲默認,reboot
設備,每次我可以通過上面的代碼的完整清單的一部分。看起來一些大型的胖活動(例如發條騎士)總是缺失。但是,第二次運行上面的代碼將返回完整列表。有沒有人知道爲什麼?我的猜測是,PackageManager需要一些時間來分析胖活動,如果太早調用它,它只是返回一個部分列表,這是真的嗎?
但爲什麼默認啓動程序沒有這個問題?
您可以在重新啓動之前保存完整列表嗎?例如在首選項或文件中。 – hasanghaforian