Java 在android中,向异步方法传递信息的最佳方式是什么?

Java 在android中,向异步方法传递信息的最佳方式是什么?,java,android,asynchronous,Java,Android,Asynchronous,我正在androidstudio中为android开发一个应用程序,我怀疑下面哪种方法更适合将信息传递给异步方法,例如HTTP请求。我使用了一个警报对话框作为示例: 第一种方法:将参数声明为final: final String par1 = "Test"; DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { @Override

我正在androidstudio中为android开发一个应用程序,我怀疑下面哪种方法更适合将信息传递给异步方法,例如HTTP请求。我使用了一个警报对话框作为示例:

第一种方法:将参数声明为final:

final String par1 = "Test";

DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            switch (which){
                case DialogInterface.BUTTON_POSITIVE:
                    //Yes button clicked
                    doSomething(par1);
                    break;

                case DialogInterface.BUTTON_NEGATIVE:
                    //No button clicked
                    break;
            }
        }
    };

    AlertDialog.Builder builder = new AlertDialog.Builder(
        MainActivity.getCurrentInstance().getApplicationContext()
    );
    builder.setMessage("confirm the operation?")
            .setPositiveButton("Yes", dialogClickListener)
            .setNegativeButton("No", dialogClickListener).show();
第二种方法:传递给侦听器构造函数:

MyOnClickListener dialogClickListener = new MyOnClickListener("test") {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            switch (which){
                case DialogInterface.BUTTON_POSITIVE:
                    //Yes button clicked
                    doSomething(this.getParameterValue());
                    break;

                case DialogInterface.BUTTON_NEGATIVE:
                    //No button clicked
                    break;
            }
        }
    };

    AlertDialog.Builder builder = new AlertDialog.Builder(
        MainActivity.getCurrentInstance().getApplicationContext()
    );
    builder.setMessage("confirm the operation?")
            .setPositiveButton("Yes", dialogClickListener)
            .setNegativeButton("No", dialogClickListener).show();

我有点害怕第一种方法,因为它是一种全局变量。

您的第一种方法很好。这不是全局变量,而是捕获到闭包中的局部变量。从技术上讲,这与将变量传入侦听器的构造函数、存储在其中然后在方法中使用的方式大致相同。不同之处在于编译器为您完成了所有这些,您可以编写更少的代码