GAO*_*kai 9 android android-menu
我正在片段中创建新的选项菜单,但在阅读了 http://developer.android.com/resources/articles/avoiding-memory-leaks.html之后 ,说使用上下文应用比使用上下文活动更好,我'我害怕使用getActivity().getMenuInflater()
所以,实际上哪一个更好
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
MenuInflater mInflater = new MenuInflater(getActivity().getApplicationContext());
mInflater.inflate(R.menu.simple_menu, menu);
}
Run Code Online (Sandbox Code Playgroud)
或者一个电话活动
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
MenuInflater mInflater = getActivity().getMenuInflater();
mInflater.inflate(R.menu.simple_menu, menu);
}
Run Code Online (Sandbox Code Playgroud)
那两个人之间的区别是什么?或者......两个都一样吗?
谢谢.
spa*_*nia 14
它们非常相似.浏览MenuInflator的源代码,它唯一使用上下文的是访问资源文件.因此,具体上下文与MenuInflator无关.
至于内存泄漏,你引用的文章说
最明显的[避免内存泄漏的方法]是避免在自己的范围之外转移上下文
除非您将MenuInflator(或Menu)传递给另一个类,否则它将包含在活动中并且不会泄露.
编辑
另外Activity.getMenuInflator()只是一种方便的方法new MenuInflator().实际上这是Activity类中的方法:
public MenuInflater getMenuInflater() {
return new MenuInflater(this);
}
Run Code Online (Sandbox Code Playgroud)
通常最好使用便捷方法,因为它们允许在将来版本中更改底层实现,而无需更改代码.例如,如果修改上述方法以返回缓存的实例,而不是每次都创建一个新的实例.
| 归档时间: |
|
| 查看次数: |
29144 次 |
| 最近记录: |