android完成流程审批,Android:如何正确等待服务流程完成

这是场景:

>我有2项活动和一项服务

>第一个活动是着陆视图/搜索页面.第二个活动显示搜索结果

>始终针对内部SQLite数据库执行搜索

>定期(比如说每天)db需要从远程源更新,这是一个漫长的过程

>如果用户在更新期间执行搜索,我想等到更新结束,同时显示“请稍候”进度警报.在刷新完全完成之前,我不想查询和显示搜索结果.

>数据库更新由AlarmManager触发并由服务执行,该服务在更新过程中将“更新”状态置于数据库中

>我可以轻松查询状态,但如何等待并定期重新查询数据库?我正在使用AsyncTask来处理搜索结果,而我的下意识反应就是将一个带wait()的循环放入AsyncTask#doInBackground方法,但这很危险,因为我不控制UI线程所以根本不起作用所以我结束了使用IllegalMonitorStateException.

在这种情况下,正确等待的“正确”方式是什么(甚至可能是状态更新)?

附:我将“等待”代码放入Runnable并在我到达AsyncTask之前执行它.它有效,例如Thread.sleep(2000)仍然不确定这是安全的方法.有没有人对FutureTask有任何经验?

解决方法:

If user performs the search during the

update I want to wait until the update

is over while displaying “Please wait”

progress alert. I don’t want to query

and display search results until

refresh is fully done.

这是你的电话,但要记住你正在创造自己的问题.就个人而言,我会抛弃这个要求.用户不应仅仅因为闹钟响起而感到不便.

例如,您可以禁用警报并在活动消失时重新启用警报.

或者,让更新以原子方式执行(例如,对表的副本进行更新,然后在事务中同步表),以便活动在更新时仍可安全地访问数据库正在发生.

What would be a “right” way to

properly wait (may be even with status

update) in this case?

让服务在更新完成后通过某种回调或广播Intent告诉活动.保持进度指示器保持活动状态直到发生这仍然会引入一些时序挑战,这就是为什么我只是抛弃了这个要求.

标签:android,background,notifications,updates

来源: https://codeday.me/bug/20190705/1385277.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值