Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

foreground: smoother service termination (fixes #2059) #2060

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

Okuro3499
Copy link
Contributor

@Okuro3499 Okuro3499 commented Jun 19, 2024

fixes #2059

Screen_recording_20240619_185352.mp4

@xyb994
Copy link
Member

xyb994 commented Jun 19, 2024

Seem to work as intended.
But I did notice an issue and I'm unsure if it's device specific. Upon swipe closing the app, when I try to open the app again from the app drawer, it would says "Treehouses Remote keeps stopping."

FATAL EXCEPTION: main
Process: io.treehouses.remote, PID: 4459
java.lang.RuntimeException: Cannot create an instance of class io.treehouses.remote.ui.home.HomeViewModel
	at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.android.kt:315)
	at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.android.kt:299)
	at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.android.kt:273)
	at androidx.lifecycle.SavedStateViewModelFactory.create(SavedStateViewModelFactory.kt:128)
	at androidx.lifecycle.ViewModelProvider$Factory.create(ViewModelProvider.android.kt:158)
	at androidx.lifecycle.viewmodel.ViewModelProviderImpl_androidKt.createViewModel(ViewModelProviderImpl.android.kt:34)
	at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release(ViewModelProviderImpl.kt:65)
	at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release$default(ViewModelProviderImpl.kt:47)
	at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.android.kt:91)
	at androidx.lifecycle.ViewModelLazy.getValue(ViewModelLazy.kt:51)
	at androidx.lifecycle.ViewModelLazy.getValue(ViewModelLazy.kt:35)
	at io.treehouses.remote.ui.home.BaseHomeFragment.getViewModel(BaseHomeFragment.kt:35)
	at io.treehouses.remote.ui.home.HomeFragment.observeConnectionState(HomeFragment.kt:244)
	at io.treehouses.remote.ui.home.HomeFragment.onViewCreated(HomeFragment.kt:69)
	at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3148)
	at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:600)
	at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:278)
	at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2152)
	at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2047)
	at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1990)
	at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3255)
	at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3165)
	at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:263)
	at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:350)
	at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:251)
	at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1525)
	at android.app.Activity.performStart(Activity.java:8030)
	at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3642)
	at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
	at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
	at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2251)
	at android.os.Handler.dispatchMessage(Handler.java:106)
	at android.os.Looper.loop(Looper.java:233)
	at android.app.ActivityThread.main(ActivityThread.java:8068)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978)
Caused by: java.lang.reflect.InvocationTargetException
	at java.lang.reflect.Constructor.newInstance0(Native Method)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
	at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.android.kt:307)
	at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.android.kt:299) 
	at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.android.kt:273) 
	at androidx.lifecycle.SavedStateViewModelFactory.create(SavedStateViewModelFactory.kt:128) 
	at androidx.lifecycle.ViewModelProvider$Factory.create(ViewModelProvider.android.kt:158) 
	at androidx.lifecycle.viewmodel.ViewModelProviderImpl_androidKt.createViewModel(ViewModelProviderImpl.android.kt:34) 
	at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release(ViewModelProviderImpl.kt:65) 
	at androidx.lifecycle.viewmodel.ViewModelProviderImpl.getViewModel$lifecycle_viewmodel_release$default(ViewModelProviderImpl.kt:47) 
	at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.android.kt:91) 
	at androidx.lifecycle.ViewModelLazy.getValue(ViewModelLazy.kt:51) 
	at androidx.lifecycle.ViewModelLazy.getValue(ViewModelLazy.kt:35) 
	at io.treehouses.remote.ui.home.BaseHomeFragment.getViewModel(BaseHomeFragment.kt:35) 
	at io.treehouses.remote.ui.home.HomeFragment.observeConnectionState(HomeFragment.kt:244) 
	at io.treehouses.remote.ui.home.HomeFragment.onViewCreated(HomeFragment.kt:69) 
	at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3148) 
	at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:600) 
	at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:278) 
	at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2152) 
	at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2047) 
	at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1990) 
	at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3255) 
	at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3165) 
	at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:263) 
	at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:350) 
	at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:251) 
	at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1525) 
	at android.app.Activity.performStart(Activity.java:8030) 
	at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3642) 
	at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221) 
	at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201) 
	at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173) 
	at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97) 
	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2251) 
	at android.os.Handler.dispatchMessage(Handler.java:106) 
	at android.os.Looper.loop(Looper.java:233) 
	at android.app.ActivityThread.main(ActivityThread.java:8068) 
	at java.lang.reflect.Method.invoke(Native Method) 
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631) 
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978) 
Caused by: java.lang.NullPointerException
	at io.treehouses.remote.bases.FragmentViewModel.loadBT(FragmentViewModel.kt:113)

@Okuro3499
Copy link
Contributor Author

Okuro3499 commented Jun 20, 2024

@xyb994 updated the pr to resolve the crash but bluetooth does not connect after relaunch working on this

@Okuro3499 Okuro3499 added the WIP label Jun 20, 2024
@xyb994
Copy link
Member

xyb994 commented Jun 24, 2024

@xyb994 updated the pr to resolve the crash but bluetooth does not connect after relaunch working on this

The app seem to be able to launch fine after "swipe to close." But after clicking on "CONNECT" and selecting the device, nothing would happen. I'd have to force close the app for it to work again. I'm not seeing anything particular interesting in logcat though.

Screen_recording_20240624_110530.mp4

@Okuro3499
Copy link
Contributor Author

yeah it's still a work in progress not ready for testing

@Okuro3499 Okuro3499 force-pushed the 2059-foreground-termination-on-close branch from 894ed22 to f08198a Compare June 26, 2024 15:40
@Okuro3499
Copy link
Contributor Author

@xyb994 retest this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

foreground termination on close
2 participants