Как закрыть или выпустить AWSAppSyncClient в Android - PullRequest
0 голосов
/ 30 мая 2019

Я использую AWSAppSyncClient Service, и вот один объект singeleton, который я использую в приложении

client = AWSAppSyncClient.builder()
        .context(context)
        .awsConfiguration(awsConfiguration)
        .credentialsProvider(
            CognitoCachingCredentialsProvider(
                context,
                ...
            )
        ).build()

И я обнаружил утечки памяти при использовании StrictMode, Вот полная трассировка стека для зарегистрированныхПроблема:

E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method 'close' not called
    at dalvik.system.CloseGuard.open(CloseGuard.java:180)
    at android.database.CursorWindow.<init>(CursorWindow.java:111)
    at android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:198)
    at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:138)
    at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:132)
    at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:219)
    at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:258)
    at com.amazonaws.mobileconnectors.appsync.AppSyncMutationSqlCacheOperations.fetchAllRecords(AppSyncMutationSqlCacheOperations.java:102)
    at com.amazonaws.mobileconnectors.appsync.PersistentOfflineMutationManager.fetchPersistentMutationsList(PersistentOfflineMutationManager.java:74)
    at com.amazonaws.mobileconnectors.appsync.PersistentOfflineMutationManager.<init>(PersistentOfflineMutationManager.java:42)
    at com.amazonaws.mobileconnectors.appsync.AppSyncOfflineMutationManager.<init>(AppSyncOfflineMutationManager.java:181)
    at com.amazonaws.mobileconnectors.appsync.AWSAppSyncClient.<init>(AWSAppSyncClient.java:169)
    at com.amazonaws.mobileconnectors.appsync.AWSAppSyncClient.<init>(AWSAppSyncClient.java:72)
    at com.amazonaws.mobileconnectors.appsync.AWSAppSyncClient$Builder.build(AWSAppSyncClient.java:478)
    at com.eleven11.app.elevenlife.client.aws.AppSyncClient.<init>(AppSyncClient.kt:25)
    at com.eleven11.app.elevenlife.client.dependency.ClientModuleKt$clientModule$1$4.invoke(ClientModule.kt:37)
    at com.eleven11.app.elevenlife.client.dependency.ClientModuleKt$clientModule$1$4.invoke(ClientModule.kt)
    at org.koin.core.instance.holder.InstanceHolder$DefaultImpls.create(InstanceHolder.kt:17)
    at org.koin.core.instance.holder.SingleInstanceHolder.create(SingleInstanceHolder.kt:10)
    at org.koin.core.instance.holder.SingleInstanceHolder.get(SingleInstanceHolder.kt:19)
    at org.koin.core.instance.InstanceFactory.retrieveInstance(InstanceFactory.kt:53)
    at org.koin.core.instance.InstanceRegistry$resolveInstance$1.invoke(InstanceRegistry.kt:138)
    at org.koin.core.instance.InstanceRegistry$resolveInstance$1.invoke(InstanceRegistry.kt:39)
    at org.koin.core.stack.ResolutionStack.resolve(ResolutionStack.kt:44)
    at org.koin.core.instance.InstanceRegistry.resolveInstance(InstanceRegistry.kt:137)
    at org.koin.core.instance.InstanceRegistry.access$resolveInstance(InstanceRegistry.kt:39)
    at org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1$2.invoke(InstanceRegistry.kt:98)
    at org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1$2.invoke(InstanceRegistry.kt:39)
    at org.koin.core.time.DurationKt.logDuration(Duration.kt:11)
    at org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1.invoke(InstanceRegistry.kt:97)
    at org.koin.core.instance.InstanceRegistry$proceedResolution$$inlined$synchronized$lambda$1.invoke(InstanceRegistry.kt:39)
    at org.koin.core.time.DurationKt.measureDuration(Duration.kt:19)
    at org.koin.core.instance.InstanceRegistry.proceedResolution(InstanceRegistry.kt:87)
    at org.koin.core.instance.InstanceRegistry.resolve(InstanceRegistry.kt:61)
    at com.eleven11.app.elevenlife.ui.search.SearchFragment.initViewModel(SearchFragment.kt:408)
    at com.eleven11.app.elevenlife.ui.search.SearchFragment.onCreate(SearchFragment.kt:66)
    at androidx.fragment.app.Fragment.performCreate(Fragment.java:2414)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1418)
    at androidx.fragment.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2646)
    at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2416)

Любая помощь по закрытию или освобождению AWSAppSyncClient

Спасибо!

1 Ответ

0 голосов
/ 03 июня 2019

Я должен использовать последнюю обновленную версию appsync, я использовал версию 2.6. +, Поэтому я сейчас использую versoin 2.9.0 и утечки памяти исчезли.

...