我正在用 Android 编写一个启动器,这是我一直试图解决一段时间但没有运气的问题。
我有下面的代码来查询在我的启动器一开始运行的所有活动,比如说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 需要一些时间来解析胖活动,如果queryIntentActivities()
调用得太早,它只会返回一个部分列表,是真的吗?
但是为什么默认启动器没有这个问题呢?