在Android片段中,Spinners需要更多时间来加载视图

时间:2018-01-19 12:51:24

标签: android performance android-fragments android-spinner

我在片段类之一中使用了5个以上的微调器,所有微调器都从String数组列表中加载,当我从另一个片段调用此片段时加载视图需要2到3秒钟,这种情况只有在我发生时才会发生使用静态数据(预定义字符串数组)这里我添加了我的代码,我在OnViewCreated方法中设置所有适配器

// Create an ArrayAdapter using a simple spinner layout and cities array
        adapterCity = new SpinnerViewAdapter(c);

        // Create an ArrayAdapter using a simple spinner layout and states array
        adapterState = new SpinnerViewAdapter(c);
        // Create an ArrayAdapter using a simple spinner layout and countries array
        adapterCountry = new SpinnerViewAdapter(c);

        // Create an ArrayAdapter using a simple spinner layout and heightFt array
        adapterHeightFt = new SpinnerViewAdapter(c);

        // Create an ArrayAdapter using a simple spinner layout and Height in Inch  array
        adapterHeightIn = new SpinnerViewAdapter(c);

        sCity.setAdapter(adapterCity);
        sCountry.setAdapter(adapterCountry);
        sState.setAdapter(adapterState);
        sHeight1.setAdapter(adapterHeightFt);
        sHeight2.setAdapter(adapterHeightIn);

        adapterCity.addAll(Arrays.asList(ListCity));
        adapterCountry.addAll(Arrays.asList(ListCountry));
        adapterState.addAll(Arrays.asList(ListState));
        adapterHeightFt.addAll(Arrays.asList(ListHeightFt));
        adapterHeightIn.addAll(Arrays.asList(ListHeightIn));

我尝试添加使用线程,我也尝试了后台任务将项目列表添加到微调器中,但对我没什么用,有人建议我更好的选择,以避免加载时间?

2 个答案:

答案 0 :(得分:1)

如果您的微调列表是静态的,那么移动string.xml布局文件中的所有列表它将起作用

答案 1 :(得分:0)

我将静态字符串数组项目移动到string.xml,同时我尝试在onPostexecute中添加AsyncTask中的所有微调器项目,现在像其他片段一样像往常一样加载,这里我添加了我的工作代码。

@SuppressLint("StaticFieldLeak")
private class BackgroundTask extends AsyncTask<Void, Void, Void> {
    @Override
    protected Void doInBackground(Void... urls) {


        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        adapterCity.addAll(ListCity);
        adapterCountry.addAll(ListCountry);
        adapterState.addAll(ListState);
        adapterHeightFt.addAll(ListHeightFt);
        adapterHeightIn.addAll(ListHeightIn);
    }
}