2011-05-16 52 views
1

在我的应用程序中,我必须做很多长时间运行的任务。通常这些访问网络,并在远程服务器上做一些东西。显然,这些是异步任务。现在的问题是:什么被认为是一种用户友好的方式来通知用户发生了什么事情?为正在进行的操作提供用户反馈的建议 - Android 3.0?

我已经使用了一个解决方案,弹出一个模式对话框,其中默认的,不确定的动画加载循环在任务运行时旋转。这太糟糕了,用户在这段时间内无法与应用程序进行交互 - 对话框是模态的 - 而且这是该死的入侵。

做你们提出的用于提供向用户反馈有什么解决办法:

A.通过推动一个ListView的listelement一个按钮启动异步任务吗? B.通过推动菜单项开始的异步任务? (从ActionBar,或常规菜单,没关系)

我宁愿解决方案是非侵入性的,但用户应该注意到事情真的发生了。

回答

2

我见过的大多数应用都使用位于用户界面某处的不确定进度条。通过这种方式,用户可以看到某些功能正在工作,但仍然可以与该活动的用户界面的所有其他部分进行交互。

1

对于A,我可能在ListView元素中为进度条留出空间。然后更新该项目的进度条。

对于B,我认为像进度条的持续通知是一个非常理想的解决方案。

0
在我的应用程序中,我必须做很多长时间运行的任务。通常这些访问网络,并在远程服务器上做一些东西。显然,这些是异步任务。

从描述中可以看出,使用AsyncTask可能不是正确的方法。如果启动AsyncTask的应用程序的Activity被停止或销毁,但数据传输已完成95%,该怎么办?应该放弃进展吗?交易是否是原子的?

我强烈建议您看看Virgil Dobjanschi's Google I/O 2010 presentation on Android REST client applications,其中他介绍了如何设计用于处理此类数据和网络通信的应用程序。 He是Android官方Twitter应用程序的作者。

+0

感谢您的警告,我意识到这些问题,并且我将重要任务的IntentService和次要重要任务的InyncTasks都用到了,当Activity被破坏时需要终止。 – 2011-05-16 17:18:50