我正在尝试创建一个启动器应用程序,我在其中使用loadLabel获取所有应用程序名称,但是它花了将近3秒来加载名称,并且非常慢!我尝试删除该文本,现在它的工作速度非常快!但我想要app标签,我们可以使用任何替代方法吗?这是代码:
TextView label = (TextView) grid.findViewById(R.id.label);
Typeface tf_label = Typeface.createFromAsset(getAssets(),
"fonts/RobotoC-Regular.ttf");
label.setTypeface(tf_label);
label.setText(info.activityInfo.loadLabel(getPackageManager())
.toString());
答案 0 :(得分:0)
类似的问题在这里。我加载了所有应用程序的列表,并将它们添加到recyclerview中,我不得不等待几秒钟才能加载它,因此我确定了加载时间。我注意到的是,使用70个应用程序加载图标和标签需要大约2.6秒才能加载应用程序,而无需加载图标和标签……惊人的61毫秒!耶毫秒! 目前,我正在使用临时解决方案,将来可能会对其进行改进。我所做的是创建一个在后台线程中加载标签和图标的模型对象。
host.com/apples#/
host.com/pears#/
host.com/pears/pearnumber/show#/
当我加载应用程序时,我将执行以下操作:
public class AppModel {
ComponentName componentName;
Drawable icon = null;
String appName = "";
public AppModel(ComponentName componentName) {
this.componentName = componentName;
}
public void init(ActivityInfo ai, PackageManager pm) {
new Thread(new Runnable() {
@Override
public void run() {
appName = (String) ai.loadLabel(pm);
icon = ai.loadIcon(pm);
}
}).start();
}
...
...
}
我需要一个快速且有效的修补程序,通过这种方式,将应用程序添加到回收站视图中时,标签和图标就会在后台加载,从而大大减少了加载时间!
我正在考虑的未来解决方案是在多线程中加载这些图标和标签。
希望有帮助。