Android-приложение вызывает onCreate () при выходе из фона - PullRequest
0 голосов
/ 20 сентября 2018

Я создал приложение для Android TV, в onCreate () приложение обрабатывает много данных, которые загружаются за несколько секунд.Когда я нажимаю кнопку «Домой» и приложение переходит в фоновый режим, из моего опыта приложение должно перейти в то же состояние, в котором оно перешло в фоновый режим.по какой-то причине подсказки уничтожаются и снова вызывается onCreate, что занимает немного времени для загрузки.

, когда приложение переходит в фоновый режим, появляется следующий logcat: onDestroy и onRestart оба они не вызываются ...

РЕДАКТИРОВАТЬ: После добавления разрешений, теперь я получаю следующий logcat:

09-19 16:41:07.938 3456-3456/? E/DataLoader: Exception in onStartLoading() on registering content observer for content uri: content://tvlauncher.mic/farfield_mic_status
    java.lang.SecurityException: Failed to find provider tvlauncher.mic for user 0; expected to find a valid ContentProvider for this authority
        at android.os.Parcel.readException(Parcel.java:1943)
        at android.os.Parcel.readException(Parcel.java:1889)
        at android.content.IContentService$Stub$Proxy.registerContentObserver(IContentService.java:768)
        at android.content.ContentResolver.registerContentObserver(ContentResolver.java:1924)
        at android.content.ContentResolver.registerContentObserver(ContentResolver.java:1913)
        at com.google.android.tvlauncher.data.DataLoader.onStartLoading(DataLoader.java:75)
        at android.content.Loader.startLoading(Loader.java:290)
        at android.app.LoaderManagerImpl$LoaderInfo.start(LoaderManager.java:283)
        at android.app.LoaderManagerImpl.doStart(LoaderManager.java:783)
        at android.app.Fragment.onStart(Fragment.java:1735)
        at com.google.android.tvlauncher.home.HomeFragment.onStart(HomeFragment.java:310)
        at android.app.Fragment.performStart(Fragment.java:2637)
        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1312)
        at android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1549)
        at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1611)
        at android.app.FragmentManagerImpl.dispatchMoveToState(FragmentManager.java:3039)
        at android.app.FragmentManagerImpl.dispatchStart(FragmentManager.java:2996)
        at android.app.FragmentController.dispatchStart(FragmentController.java:189)
        at android.app.Activity.performStart(Activity.java:6998)
        at android.app.Activity.performRestart(Activity.java:7066)
        at android.app.Activity.performResume(Activity.java:7071)
        at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3620)
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3685)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1643)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
09-19 16:41:07.949 3456-18708/? E/ActivityThread: Failed to find provider info for tvlauncher.mic

Ответы [ 3 ]

0 голосов
/ 20 сентября 2018

Прочитайте ваш logcat, для этого требуется разрешение

java.lang.SecurityException: Permission Denial: opening provider com.google.android.katniss.search.serviceapi.KatnissVoiceInteractionContentProvider from ProcessRecord{eed2c2d 2512:com.google.android.tvlauncher/u0a23} (pid=2512, uid=10023)
requires com.google.android.assistant.READ_HOTWORD_STATE or com.google.android.assistant.WRITE_HOTWORD_STATE

Добавьте

<uses-permission android:name="com.google.android.assistant.READ_HOTWORD_STATE" />
<uses-permission android:name="com.google.android.assistant.WRITE_HOTWORD_STATE" />

в ваш файл manifest.xml

0 голосов
/ 20 сентября 2018

Хорошо, спасибо: onCreate () вызывается, когда активность остановлена ​​(но не уничтожена).Только после установки

Добавление:

if (!isTaskRoot()) {
  finish();
  return;
} 

в onCreate () решило проблему!

0 голосов
/ 20 сентября 2018

Добавьте это разрешение в свой AndroidManifest.xml:

 <uses-permission android:name="com.google.android.assistant.WRITE_HOTWORD_STATE" />
...