我应该使用“_activity = this;
”吗?
我在示例代码中看到了多次引用_activity。所以,我随意决定它看起来是一个很好的做法,并且已经在我的所有代码中使用了一段时间(超过一年)。但是,在我开始传播这个词之前,我想找到一些适当的文档,使用全局(活动本地)上下文变量是好的做法。
有人有想法/想法/链接吗?知道任何利弊吗?
到目前为止我找到的一种资源似乎表明使用this
有好时机和坏时机我知道我可以使用this
或MainActivity.this
,但这不是问题。
..万一你不知道我在说什么,这里有一个简单的例子:
public class MainActivity extends Activity {
MainActivity _activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
_activity = this; // TODO: Find out if this is good practice?
setContentView(R.layout.activity_main);
}
public void onClickButton(View v) {
Toast.makeText(_activity, "Five boxing wizards", Toast.LENGTH_LONG).show();
button2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(_activity, "asdf", Toast.LENGTH_LONG).show();
}
});
}
}
编辑:评论的另一个侧面问题:举手示意,谁实际使用_activity
?
答案 0 :(得分:11)
这不是好习惯。在大多数情况下,只需使用this
,在创建匿名子类时使用MainActivity.this
等。
我认为问自己的正确问题是,“添加此成员变量是否为我做了任何事情”,或者“我可以对_activity
做些什么我无法对{{1}做什么”我可以告诉你答案是“不”,但你应该自己决定是否属实。
答案 1 :(得分:3)
这不是好习惯。
除了没有实现任何目标(直接使用this
无法完成):
我认为代码较少可读,但您可能不同意。
答案 2 :(得分:1)
不,这不好。如果我正在阅读代码,我知道“这”意味着什么,但如果我发现我需要调查。
答案 3 :(得分:0)
只有当你的外部阶级不是一个活动,但你需要一个活动时才有意义。例如,如果你想在你自己的文件中定义你的onclicklistener,你需要传入并存储一个引用(注意不要像注释那样泄漏;)
答案 4 :(得分:0)
除了创建不必要的引用之外(因为实例也可以通过this
关键字或MainActivity.this
使用,因此不建议使用前缀为下划线的字段名称Code Conventions for the Java Programming Language: 9. Naming Conventions