当应用程序出现在前台时执行操作

时间:2019-06-01 18:20:42

标签: java android android-lifecycle android-background onstart

我正在开发一个必须执行一些后台工作的应用程序。因此,我正在使用服务。现在,我要实现的目标是假设用户开始进行后台工作,并且在加载工作时,用户可以选择最小化应用程序或等待加载结束。

加载结束后,我想打开另一个活动。现在,我的问题是假设用户开始加载并最小化应用程序,然后在加载结束后用户尚未返回到应用程序,那么如果我在没有用户查看我的应用程序的情况下启动屏幕,则该用户可能会被打断与他的工作。

所以我想要的是加载结束后,我只想在用户可见我的应用程序时打开,如果用户看不见该应用程序,那么我要等到用户返回时才打开如果加载结束,用户返回我要打开屏幕。

现在我想的是,我应该有一个布尔值,该布尔值将跟踪用户是否可见该应用程序。在onStop上,将布尔值设置为false,在onStart上,将值设置为true。再次onStart,我将检查加载是否完成,如果是,则将打开屏幕。

但是我想知道是否有更好的方法来实现这一目标?如果是,那么如何。我正在寻找更好的方法的原因是我想为我的应用编写干净的代码,这样可以避免错误和崩溃。

1 个答案:

答案 0 :(得分:0)

这正是LiveDataRxJava的场景。仅当活动可见时,您的活动才会获取数据。您的Viwemodel仅在活动可用且生命周期知道时才将活动数据提供给活动。如果您的应用需要在用户关闭应用后仍继续工作,即使用户重新启动了应用,也可以考虑使用WorkManagerConstraints还随附了mounted(),可根据网络,电池寿命...来优化您的工作,并提供实时数据供Viewmodel使用。