gpt4 book ai didi

android - 这 2 个选项中哪一个更适合性能?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:43:50 26 4
gpt4 key购买 nike

我在我的 Android 应用程序中使用 fragment 。在这些 fragment 中,我需要一个 Context 对象以便通过一些方法调用重复使用它(大约 10 次)。

如你所知,我有 2 个选择:

选项一:

public class MyFragment extends Fragment{
public void onCreate(Bundle savedInstanceState){
super(savedInstanceState);

//call a lot of methods and use getActivity() a lot of times
}
}

选项二:

public class MyFragment extends Fragment{

private Activity mActivity;

public void onCreate(Bundle savedInstanceState){
super(savedInstanceState);

mActivity = getActivity();
//call a lot of methods and use mActivity
}
}

我知道声明 mActivity 字段需要一些内存(多少?),但我认为调用 getActivity 需要一些 CPU 处理。

这两个选项中哪个更好,为什么?


编辑:

好吧,查看 Android 源代码我可以在 Fragment 类中找到 getActivity() 方法的源代码:

final public FragmentActivity getActivity() {
return mActivity;
}

所以,正如您所看到的,在选项 II 中,mActivity 被保留了两次,这是一种内存浪费,所以从现在开始我将使用选项 I。

谢谢你的回答,他们让我明白了这一点:)

最佳答案

but I think calling getActivity will need some CPU processing.

没你想的那么简单。 getActivity 只是访问一个字段,获取 Activity 。它不涉及太多CPU。你的第二种方法需要一点内存堆,第一种方法需要一点堆栈,see this为了表现。

另一方面。这是 premature optimization.如果当前代码没有任何内存问题。

关于android - 这 2 个选项中哪一个更适合性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20646885/

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