2017-10-05 113 views
0

在我使用Android应用程序的经验中,看到很多匿名内部类并不罕见。现在我正在开发一个自动更新功能,并在下面有一些代码示例。如何在java应用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变得非常频繁,只是看看代码很难。我想知道是否有任何方法可以提高代码的可读性,以减少哈代或至少分解它。由于异步任务不是接口,Lambdas在这种情况下不起作用。

+0

如何写入较旧的api级别可以防止使用lambdas? – Oleg

+0

对不起,我误解了为什么我不能使用lambdas。在问题中做了修正。 –

+0

shmakova回答说,即使你写了一个库,仍然可以使用lambda表达式。如果你仍然不想,那就没有魔力了,而不是你可以做的示例代码:1.使'task'成为一个字段。 2.使用内部类3.使用本地类。 4.在方法中创建'task'。可能还有其他一些选择。 – Oleg

回答

0

您可以在库代码中使用lambdas。 对于它,您可以使用retrolambda gradle插件,或者您可以使用新的Android Studio 3.0,其中java 8的功能已经支持。杰克在今年春天被弃用了。

相关问题