在我的应用程序中,我必须完成许多长时间运行的任务。通常这些访问网络,并在远程服务器上做一些事情。显然,这些都是异步任务。现在的问题是:什么被认为是一种用户友好的方式来通知用户发生了什么?
我使用了一个解决方案,弹出一个模态对话框,默认的,无限期的动画加载圈在任务运行时旋转。这很糟糕,用户在这段时间内无法与应用程序进行交互 - 对话框是模态的 - 而且它本身就是侵入性的。
你们建议用什么解决方案为用户提供反馈:
一个。通过按ListView的侦听按钮启动异步任务? B.通过按菜单项启动异步任务? (来自ActionBar,或常规菜单,没关系)
我宁愿这个解决方案是非侵入式的,但用户应该注意到某些事情真的发生了。
答案 0 :(得分:2)
我见过的大多数应用都使用位于UI上某处的不确定进度条。这样,用户看到某些内容正在运行,但仍然可以与活动的UI的所有其他部分进行交互。
答案 1 :(得分:1)
对于A,我可能会在进度条的ListView元素中留出空间。然后更新该项目的进度条。
对于B,我认为像持续通知进度条这样的东西将是一个非常理想的解决方案。
答案 2 :(得分:0)
在我的应用程序中,我必须完成许多长时间运行的任务。通常这些访问网络,并在远程服务器上做一些事情。显然,这些是异步任务。
根据描述,这可能不是使用AsyncTask是正确方法的情况。如果启动AsyncTask的应用程序的Activity被停止或销毁,但数据传输完成了95%怎么办?是否应该放弃进度?交易是原子的吗?
我强烈建议观看Virgil Dobjanschi's Google I/O 2010 presentation on Android REST client applications,其中他描述了设计用于处理此类数据和网络通信的应用。 He是Android官方Twitter应用的作者。