我正在尝试检测我的应用是否从多任务处理中变为活动状态并显示对话框。
用例是这样的:用户正在使用该应用程序 - >点击主页按钮 - >做点什么 - >用户再次点击应用
正如所料,正在显示用户所在的最后一项活动。
我希望在发生这种情况时显示对话框。我使用onRestart()同样有效。唯一的问题是,即使用户在应用程序中进行某些活动然后再次点击,也会显示对话框。
我经历了几次活动生命周期,但无法弄清楚解决方案。有什么想法吗?
答案 0 :(得分:0)
好吧,您可以使用Determining the current foreground application from a background task or service中列出的技术告诉前台应用程序:查找getForegroundApp
。您可以运行一个定时检查以查看应用程序是否为前台的计时器,如果不是,则在适当的延迟后设置变量(以确保在切换活动时不会以错误的顺序命中它)。清除onStart
中的变量,如果调用了活动的onCreate
,则表示该应用刚刚变为活动状态。
答案 1 :(得分:0)
我通过在onStop()的共享首选项中设置一个标志并在onDestroy()中清除它来实现这一点。
然后我按下后退按钮,在按下时清除标志。这解决了我所说的问题。
现在在onRestart()中,如果标志为真......我会显示对话框。
我知道这不是最优雅的解决方案,但能胜任这项工作!希望这有助于某人。