【发布时间】:2024-01-16 04:57:01
【问题描述】:
根据我使用 Android 应用程序的经验,看到很多匿名内部类并不少见。现在我正在开发自动更新功能,下面有一些代码示例。
@Override
public void onStart() {
super.onStart();
IsUpdateAvailableTask task = new IsUpdateAvailableTask(){
@Override
protected void onPostExecute(Boolean updateAvailable) {
super.onPostExecute(updateAvailable);
if (updateAvailable) {
UpdateAvailableDialogFragment dialogFragment = UpdateAvailableDialogFragment.newInstance();
dialogFragment.show(getFragmentManager(), UpdateAvailableDialogFragment.class.getSimpleName());
TaskFragment.updateDialogShown = true;
}
}
};
task.execute(mParameters.getHostUrl(), mParameters.getPackageName(), mParameters.getVersionName());
}
我对这种方法的问题是代码 hadoukens 变得非常频繁,使得仅查看代码变得更加困难。我想知道是否有任何方法可以提高代码的可读性以减少 hadouken 或至少将其分解。由于异步任务不是接口,因此 Lambda 在这种情况下无法工作。
【问题讨论】:
-
写入旧 api 级别如何阻止您使用 lambdas?
-
对不起,我误解了为什么我不能使用 lambdas。在问题中进行了修复。
-
正如 shmakova 回答的那样,即使您编写了一个库,您仍然可以使用 lambda。如果您仍然不想这样做,没有灵丹妙药,您可以使用示例代码代替: 1. 将
task设为一个字段。 2. 使用内部类 3. 使用本地类。 4. 在方法中创建task。可能还有其他选择。
标签: java android coding-style