6

我应该使用“ _activity = this;”吗?

我在示例代码中多次看到 _activity 被引用。因此,我武断地认为这看起来是一种很好的做法,并且已经在我的所有代码中使用了一段时间(一年多)。但是,在我开始更多地传播这个词之前,我想找到一些适当的文档,说明使用全局(活动局部)上下文变量是否是好的做法。

有人有想法/想法/链接吗?知道任何优点和缺点吗?

到目前为止,我发现的一个资源似乎说使用它有好有

我知道我可以使用thisor 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

4

5 回答 5

11

这不是好的做法。this在大多数情况下简单地使用,以及MainActivity.this在创建匿名子类等时使用。

我认为要问自己的正确问题是,“添加这个成员变量对我有什么作用”,或者“有什么我可以做而_activity我不能做的事情this。我可以告诉你答案是“不”,但你应该自己决定这是否属实。

于 2012-12-30T03:20:17.340 回答
3

这不是好的做法。

除了没有实现任何东西(直接使用无法完成this):

  • 它使父对象更大(通过一个引用),
  • 它可能会慢一些,并且
  • 它使您的代码更加脆弱;例如,如果有人不小心为变量分配了不同的值。

我认为代码的可读性较差,但您可能不同意这一点。

于 2012-12-30T03:27:03.670 回答
1

不,这不好。如果我正在阅读代码,我知道“this”是什么意思,但如果我看到我需要调查。

于 2012-12-30T03:23:46.140 回答
0

仅当您的外部类不是一项活动但您需要一项活动时,这才有意义。例如,如果你想在自己的文件中定义你的 onclicklistener,你需要传入并存储一个引用(注意不要像注释那样泄漏太多;)

于 2012-12-30T08:44:27.850 回答
0

除了创建不必要的引用(因为实例也可以通过this关键字 or获得,根据 Java 编程语言MainActivity.this的代码约定,不鼓励使用下划线前缀的字段名称:9. 命名约定

于 2012-12-30T13:47:05.287 回答