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

时间:2012-12-30 03:14:56

标签: java android android-activity

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

我在示例代码中看到了多次引用_activity。所以,我随意决定它看起来是一个很好的做法,并且已经在我的所有代码中使用了一段时间(超过一年)。但是,在我开始传播这个词之前,我想找到一些适当的文档,使用全局(活动本地)上下文变量是好的做法。

有人有想法/想法/链接吗?知道任何利弊吗?

到目前为止我找到的一种资源似乎表明使用this

有好时机和坏时机

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

5 个答案:

答案 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