1

I created an Android TV app, on the onCreate() the app handles a lot of data which take it few seconds to load up. When I press the home button and the app goes to background, from my experince the app should come up in the same state as it went to background. for some reason the helps get destroyed and onCreate called again which takes a bit of time to load.

the following logcat apears when the app goes to the background: onDestroy and onRestart both of them aren't called...

EDIT: After adding the permissions, now I get the following 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
CR_244
  • 141
  • 6

3 Answers3

2

Read your logcat, it requires permission

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

Add

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

inside your manifest.xml file

shb
  • 5,957
  • 2
  • 15
  • 32
  • 1
    Damn, my bad, anyway these permission fixed most of the logcat error, but it's still dosen't work. I have edited the post with the new logcat! – CR_244 Sep 19 '18 at 22:42
  • Seems like, onRestart isn't called when coming back from background. onDestroy isn't called too... – CR_244 Sep 19 '18 at 22:57
0

Add this permission in your AndroidManifest.xml :

 <uses-permission android:name="com.google.android.assistant.WRITE_HOTWORD_STATE" />
nupadhyaya
  • 1,909
  • 1
  • 14
  • 14
0

Ok,thanks to: onCreate() called while Activity is stopped (but not destroyed). Only after installation

Adding:

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

to onCreate() solved the problem!

CR_244
  • 141
  • 6