从recyclerview打开多个活动会导致应用滞后

阿里安尼·利马尼(Arianit Limani):

我的应用程序运行正常,没有任何滞后。但是,我有一个recyclerview,它可以打开一个包含项目详细信息的新活动。假设活动A具有recyclerview并打开了活动B。如果用户打开活动B并执行onBackpressed并重复此过程,则整个应用程序开始滞后。基本上,导致应用程序滞后的交互流为:A-> B-> A-> B ...(如果用户执行此操作超过10次,则该应用程序几乎变得不可用)。我曾尝试过泄漏金丝雀,但它没有报告任何内存泄漏。还检查android配置文件,唯一增加的内存是本机内存。

在适配器中,除了bind方法之外,在onBindViewHolder上我什么也没有。通过接口实现点击方法。

public class ElementsAdapter extends RecyclerView.Adapter<ElementsAdapter.ElementsViewHolder> implements Filterable {

private final LayoutInflater inflater;

private ElementsRecyclerItemClickListener recyclerItemClickListener;
private List<Elements> elements;
private List<Elements> filteredElements;

public boolean isSearchRequestFiler = false;

ElementsAdapter(Context context) {
    this.inflater = LayoutInflater.from(context);
}

@Override
public ElementsAdapter.ElementsViewHolder onCreateViewHolder(final ViewGroup parent, final int viewType) {
    return new ElementsAdapter.ElementsViewHolder(RowElementsBinding.inflate(inflater, parent, false));
}

@Override
public void onBindViewHolder(final ElementsAdapter.ElementsViewHolder holder, final int position) {
    holder.bind(filteredElements.get(position));
}

@Override
public void onViewRecycled(ElementsAdapter.ElementsViewHolder viewHolder) {
    super.onViewRecycled(viewHolder);
}

@Override
public int getItemCount() {
    return filteredElements == null ? 0 : filteredElements.size();
}

Elements getItemAt(int position) {
    return filteredElements.get(position);
}

void setRecyclerItemClickListener(ElementsRecyclerItemClickListener elementClickListener) {
    this.recyclerItemClickListener = recyclerItemClickListener;
}
 void setElements(final List<Elements> elements) {
    this.elements = elements;
    this.filteredElements = elements;
    notifyDataSetChanged();
}

class ElementsViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    final RowElementsBinding binding;

    ElementsViewHolder(RowElementsBinding binding) {
        super(binding.getRoot());
        this.binding = binding;
        this.binding.getRoot().setOnClickListener(this);
    }

    public void bind(Element element) {
        binding.setElement(element);
        binding.executePendingBindings();
    }

    @Override
    public void onClick(View view) {

        if (recyclerItemClickListener != null)
            recyclerItemClickListener.onElementClickListener(getAdapterPosition());
    }
}

活动A上的点击监听器:

@Override
public void onElementClickListener(int position) {
    Intent intent = new Intent(ActivityA.this, ActivityB.class);
    intent.putExtra("ELEMENTS_ID", adapter.getItemAt(position).getId());
    intent.putExtra("ELEMENTS_OPENED_FROM", "ACTIVITY_A");
    startActivity(intent);
}

任何帮助,将不胜感激

阿里安尼·利马尼(Arianit Limani):

在尝试了许多事情并进行了大量测试之后,我发现出现延迟的原因是facebook sdk(要解决此问题,我从5.0.0。降级为4.41.0)。因此,facebook发送无代码事件,并且将它们分配在内存中,直到我完成活动A之前才释放它们。希望这对某人有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

实施深层链接网址会导致本机应用无法打开android

每当我打开RecyclerView活动时,应用程序都会停止运行

使用OSXAdapter的JAR Bundler导致应用程序滞后或终止

使用watir-webdriver打开多个线程会导致“连接被拒绝”错误

尝试在TestFlight中打开iOS应用会导致错误“该应用不可用。请重试。”

深层链接导致该应用的多个实例打开

将CSS动画应用于多个元素会导致动画速度差异

带多个滞后滚动的嵌套RecyclerView

从活动开始Fragment活动会导致NullPointerException

JavaScript鼠标移动会导致滞后吗?

从推送通知中打开应用程序会导致NullPointerException

从导航抽屉活动返回会导致应用崩溃

然后将MultiIndex上的DataFrame groupby()应用于多个列会导致广播问题

实例化Java AWT对象会导致在macOS上打开空应用程序

如何从recyclerview项目打开活动?

接听电话会导致android应用中的第二项活动关闭

多图片上传会导致应用崩溃,因为打开文件过多

当窗口失去焦点时,HUD会导致Firefox滞后

Android:从应用安装程序启动应用会导致多个实例吗?

碎片会导致脂肪活动吗?

intentService会导致活动并发问题

android 应用活动滞后

获取前台应用的打开活动

打开安卓应用链接会导致安卓系统崩溃

我的应用没有打开正确的活动 - 为什么会这样?

由于 recyclerView 导致活动/片段滞后

ReactJS - 更新状态会导致滞后

Swift / Firestore setData 一次包含多个文档会导致应用程序崩溃

多个 TransferSpreadsheet 命令会导致在打开时选择所有创建的工作表