我正在更新一些代码以在 Android 上使用retrolambda。该代码大部分都有效,但 Android Studio 2.1 IDE 似乎标记了之前 OK 的代码:
@WorkerThread void expensiveBackgroundOperation()
{
// Stuff.
}
@UiThread void updateSomeStuffOld()
{
AsyncTask.execute(new Runnable() {
@Override public void run()
{
expensiveBackgroundOperation();
}
});
}
@UiThread void updateSomeStuffNew()
{
AsyncTask.execute(() -> expensiveBackgroundOperation());
}
以下屏幕截图显示正确推断出旧的可运行语法(或者更确切地说,它没有被推断出,并且run()
需要使用 @WorkerThread 注释该方法才能使注释在内部正常工作......)但在 retrolambda 语法版本中,该方法被推断为在 UI 上运行,这不是:
如何使用注释对 lambda 进行@WorkerThread
注释?我试过把它放在几个地方,但我似乎无法让 IDE 满意。