代码之家  ›  专栏  ›  技术社区  ›  Kishita Variya

如何在布局中膨胀多个XML文件而不影响性能。(大约70种布局)

  •  1
  • Kishita Variya  · 技术社区  · 6 年前

    我有大约70个XML布局文件要在一个活动中膨胀(比如输入字段列表)。就像某种巨大的形状)。装载大约需要3-4秒。 我无法使用RecyclerView,因为它在打开键盘时崩溃。而且,上下滑动很慢)

    请建议一些快速打开活动的方法。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Kishita Variya    6 年前

    对于那些面临类似问题的人,我找到了一个解决办法: 我使用了AsyncTask(膨胀部分在后台完成,而仅仅添加视图在前台完成)

    public class MyAsync extends AsyncTask<Void, View, Void> {
      LayoutInflater inflater;
      Activity activity;
     LinearLayout parent;
      List<Integer> layoutIds;
    
    public MyAsync(Activity activity,LinearLayout linLayout,List<Integer> layoutIds) {
        this.activity = activity;
        this.parent = linLayout;
        this.layoutIds = layoutIds;
    }
    
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        inflater = activity.getLayoutInflater();
    }
    
    @Override
    protected Void doInBackground(Void... voids) {
        for (int i = 0; i < layoutIds.size(); i++) {
            View view = inflater.inflate(layoutIds.get(i), null);
            publishProgress(view);
        }
        return null;
    }
    
    
    @Override
    protected void onProgressUpdate(View... view) {
        super.onProgressUpdate(view);
    
        parent.addView(view[0]);
      }
    }