Android loadLabel给出了非常滞后/慢的性能,任何解决方案?

时间:2015-06-04 01:13:20

标签: android performance android-layout

我正在尝试创建一个启动器应用程序,我在其中使用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());

1 个答案:

答案 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();

    }
    ...
    ...
}

我需要一个快速且有效的修补程序,通过这种方式,将应用程序添加到回收站视图中时,标签和图标就会在后台加载,从而大大减少了加载时间!

我正在考虑的未来解决方案是在多线程中加载这些图标和标签。

希望有帮助。