Android: какие зависимости импортировать для Futures и AppSearch Android 12

Я следую этому руководству https://developer.android.com/guide/topics/search/appsearch#groovy,
чтобы создать образец приложения с помощью AppSearch. Однако, когда я получаю часть схемы, у меня есть неизвестные ссылки на «Futures». Я попытался найти какие-либо зависимости, связанные с Futures concurrent для Android, и нашел 3 зависимости, но это не решает неизвестные ссылки на «Futures». Я также не знаю, что должно быть «mExecutor», потому что я не вижу класс «Futures» и его функцию из-за неизвестной ссылки.

Вот мои зависимости:

      def appsearch_version = "1.0.0-alpha03"
    implementation "androidx.concurrent:concurrent-listenablefuture-callback:1.0.0-beta01"
    implementation "androidx.concurrent:concurrent-listenablefuture:1.0.0-beta01"
    implementation "androidx.concurrent:concurrent-futures-ktx:1.1.0"
    implementation "androidx.appsearch:appsearch:$appsearch_version"
    // Use kapt instead of annotationProcessor if writing Kotlin classes
    annotationProcessor "androidx.appsearch:appsearch-compiler:$appsearch_version"

    implementation "androidx.appsearch:appsearch-local-storage:$appsearch_version"
    // PlatformStorage is compatible with Android 12+ devices, and offers additional features
    // to LocalStorage.
    implementation "androidx.appsearch:appsearch-platform-storage:$appsearch_version"

Вот мой код (такой же, как в руководстве разработчика):

          val sessionFuture = LocalStorage.createSearchSession(
                LocalStorage.SearchContext.Builder(this, /*databaseName=*/"notes_app")
                    .build()
            )
            val setSchemaRequest = SetSchemaRequest.Builder().addDocumentClasses(Note::class.java)
                .build()
            val setSchemaFuture = Futures.transformAsync(//Futures unknown reference
                sessionFuture,
                { session ->
                    session?.setSchema(setSchemaRequest)
                }, mExecutor//?
            )

val putRequest = PutDocumentsRequest.Builder().addDocuments(note).build()
            val putFuture = Futures.transformAsync(
                sessionFuture,
                { session ->
                    session?.put(putRequest)
                }, mExecutor
            )
            Futures.addCallback(//Futures unknown reference
                putFuture,
                object : FutureCallback<AppSearchBatchResult<String, Void>?{//FutureCallback unknown reference
                    override fun onSuccess(result: AppSearchBatchResult<String, Void>?) {

                        // Gets map of successful results from Id to Void
                        val successfulResults = result?.successes

                        // Gets map of failed results from Id to AppSearchResult
                        val failedResults = result?.failures
                    }

                    override fun onFailure(t: Throwable) {
                        Log.e(TAG, "Failed to put documents.", t)
                    }
                },
                mExecutor//?
            )

Если у вас есть представление об импорте, который мне нужно реализовать, или о каком-либо способе добиться того же с помощью сопрограммы kotlin?

0 ответов

Другие вопросы по тегам