我正在开发一个必须执行一些后台工作的应用程序。因此,我正在使用服务。现在,我要实现的目标是假设用户开始进行后台工作,并且在加载工作时,用户可以选择最小化应用程序或等待加载结束。
加载结束后,我想打开另一个活动。现在,我的问题是假设用户开始加载并最小化应用程序,然后在加载结束后用户尚未返回到应用程序,那么如果我在没有用户查看我的应用程序的情况下启动屏幕,则该用户可能会被打断与他的工作。
所以我想要的是加载结束后,我只想在用户可见我的应用程序时打开,如果用户看不见该应用程序,那么我要等到用户返回时才打开如果加载结束,用户返回我要打开屏幕。
现在我想的是,我应该有一个布尔值,该布尔值将跟踪用户是否可见该应用程序。在onStop
上,将布尔值设置为false,在onStart
上,将值设置为true。再次onStart
,我将检查加载是否完成,如果是,则将打开屏幕。
但是我想知道是否有更好的方法来实现这一目标?如果是,那么如何。我正在寻找更好的方法的原因是我想为我的应用编写干净的代码,这样可以避免错误和崩溃。
答案 0 :(得分:0)
这正是LiveData和RxJava的场景。仅当活动可见时,您的活动才会获取数据。您的Viwemodel仅在活动可用且生命周期知道时才将活动数据提供给活动。如果您的应用需要在用户关闭应用后仍继续工作,即使用户重新启动了应用,也可以考虑使用WorkManager。 Constraints还随附了mounted()
,可根据网络,电池寿命...来优化您的工作,并提供实时数据供Viewmodel使用。