在我的 Android 项目中,我定义了一些回调来操作按钮单击、连接事件或 UI 事件,例如 Dilaog.onShow()。出于演示目的,我选择了一个必须从一些 Activity 代码启动的 Runnable 接口。使用 Java,我有不同的方式来表达自己。
一种模式是使用匿名类
runOnUiThread(new Runnable() {
public void run() {
doSomething();
}
});
private void doSomething() {
}
另一个 - 定义一个内部私有类,即
private DoSomething implements Runnable {
public void run() {
// do something;
}
}
...
runOnUiThread(new DoSomething());
还有一个 - 使用私人成员,如下所示:
private final Runnable doSomething = new Runnable() {
public void run() {
// do something;
}
}
...
runOnUiThread(doSomething);
这是我最喜欢的另一个,因为一方面它实际上不会构造对象,除非有人真正使用它,因为它避免了额外的类,因为它可以在需要时接受参数。
private Runnable doSomething() {
return new Runnable() {
public void run() {
// do something;
}
}
}
...
runOnUiThread(doSomething());
我不是在寻找品味或宗教信仰的论据,而是代码的可维护性和性能。我希望收到可以帮助我发展自己的偏好的提示和建议,可能 - 根据给定情况的不同偏好。
剧透:
Java 的进步已经使这个问题过时了,请参阅接受的答案。