Java 在android中,向异步方法传递信息的最佳方式是什么?
我正在androidstudio中为android开发一个应用程序,我怀疑下面哪种方法更适合将信息传递给异步方法,例如HTTP请求。我使用了一个警报对话框作为示例: 第一种方法:将参数声明为final:Java 在android中,向异步方法传递信息的最佳方式是什么?,java,android,asynchronous,Java,Android,Asynchronous,我正在androidstudio中为android开发一个应用程序,我怀疑下面哪种方法更适合将信息传递给异步方法,例如HTTP请求。我使用了一个警报对话框作为示例: 第一种方法:将参数声明为final: final String par1 = "Test"; DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { @Override
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();
我有点害怕第一种方法,因为它是一种全局变量。您的第一种方法很好。这不是全局变量,而是捕获到闭包中的局部变量。从技术上讲,这与将变量传入侦听器的构造函数、存储在其中然后在方法中使用的方式大致相同。不同之处在于编译器为您完成了所有这些,您可以编写更少的代码