Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 引用自身的回调与独立子类的回调_Android - Fatal编程技术网

Android 引用自身的回调与独立子类的回调

Android 引用自身的回调与独立子类的回调,android,Android,也许是个愚蠢的问题,但我不明白… 以下两种方法之间有区别吗? 我是说浪费记忆什么的 class A implements Handler.Callback { // is it OK to pass the loopback reference into the Handler in this case? Handler mHandler = new Handler(this); public boolean handleMessage(Message msg) {

也许是个愚蠢的问题,但我不明白…
以下两种方法之间有区别吗? 我是说浪费记忆什么的

class A implements Handler.Callback {
    // is it OK to pass the loopback reference into the Handler in this case?
    Handler mHandler = new Handler(this); 
    public boolean handleMessage(Message msg) {
         ...
    }
}

class B {
    Handler mHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
             ...
         }
    };
}

谢谢大家!

我认为这取决于你想要的用途。如果您只有一个按钮并且需要处理它的点击,我将使用一个匿名类(就像您的
类B
)。但是,如果一个视图包含许多按钮或其他东西,您希望为其处理单击事件,我将使用第一个方法,对所有控件使用一个单独的处理程序。这也节省了您为每个控件创建额外对象的时间(编码和内存开销)

我目前正在项目中使用这种方式,让我的活动处理每次单击,然后做进一步的工作:

public class MyActivity extends Activity implements View.OnClickListener {

...

@Override
public void onClick(View view) {
    switch (view.getId()) {
    case R.id.button1:
        // handle button 1
        break;
    case R.id.button2:
        // handle button 2
        break;
        // ...
    }
}
...
}