gpt4 book ai didi

android - instagram android 是如何实现导航的?

转载 作者:行者123 更新时间:2023-12-05 07:45:43 25 4
gpt4 key购买 nike

我正在构建一个导航类似于 Instagram 的 Android 应用程序,它有多个选项卡,每个选项卡都有自己的历史记录。

实现

我通过使用 ViewPagerFragmentPagerAdapter 实现了这个导航。向下导航每个选项卡时,我通过执行以下代码替换 FrameLayout 的内容getChildFragmentManager.beginTransaction().addToBackStack(null).replace(R.id.container, newFragment).commit()并为后退按钮按下事件执行 getChildFragmentManager.popBackStackImmediate()

我使用 facebook fresco 的 SimpleDraweeView 并通过执行 SimpleDraweeView.setImageURI(Uri.parse(str)) 加载图像。

应用程序使用 MapView 并创建自定义标记,其图标由 Picasso.with(context).with(url).into(new MarkerTarget(...) )

class MarkerTarget implements Target {
private Marker marker;
public MarkerTarget(Marker marker) {
this.marker = marker;
}

public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
try {
marker.setIcon(BitmapDescriptorFactory.fromBitmap(bitmap));
marker.setVisible(true);
} catch(Exception e) {

}
}

...

}
}

大多数 fragment 都有 ListViewBaseAdapter 的扩展,以及一个展示者。

问题

它似乎有效,但问题是当我在选项卡中向下导航时,会发生 OOM 错误。 Instagram 如何保存(可能)无限数量的历史记录。

Allocation Tracker Result (Screenshot)

Heap Dump Result (Screenshot)

问题

如何在 Android 平台上实现类似 instagram 的导航?

最佳答案

有多种方法可以做到这一点:

  1. 使用页面适配器,其中每个页面都可以被视为将包含一堆子 fragment 的根 fragment 。
  2. 与上面类似,但不使用适配器。使用多个根 fragment ,这些 fragment 会在用户切换选项卡时被换出。

OOM 错误的发生可能有多种原因。1. 随着 fragment 的堆积,每个 fragment 都保留了一些数据。您可能希望保存状态并恢复数据以节省内存。2. 使用页面适配器可能会导致这种情况,因为页面适配器可以使 fragment 保持 Activity 状态,即使它们当前不可见也是如此。

尝试运行您的应用并研究 HPROF 文件以获取内存使用情况的线索。

关于android - instagram android 是如何实现导航的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41427674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com