2012-04-20 57 views
2

我正在创建一个应用程序MainActivity,该应用程序可以从其数据库中计算报告以显示在ReportActivity中。所有报告计算均在ReportActivity.onCreate()完成。在android中实现视觉反馈/忙碌指示灯的最简单方法

当用户点击MainActivity-s菜单中的“生成报告”时,menü保持打开状态2秒,直到ReportActivity.onCreate()完成并且报告变得可见。

给用户一些视觉反馈最简单的方法是什么?

我已经找到ProgressDialog onCreate,它显示了在AsyncTask中进行所有计算时的进度对话框。

我不知道是否有一些更简单的方法可以给用户一些视觉反馈,菜单已成功点击并且设备没有崩溃。

在MS Windows中我会用一个waitcursor(沙漏)

我已经尝试过在OnCreate中的ReportActivity

final ProgressDialog progressDialog = ProgressDialog.show(this, "MY Dialog", "Please wait..."); 

的打开ProgressDialog(),但它没有显示在所有。

更新最终的解决方案:

由于answerss建议我实现了对的AsyncTask后的处理this tutorial 基于this codesample

+0

ANR时间限制为5秒,您的应用程序如何在不使用ANR的情况下生成报告需要10秒。 – 2012-04-20 21:59:52

+0

你是对的,它感觉像10秒 - 实际上它只有1-2秒。我纠正了它 – k3b 2012-04-20 22:02:35

回答

2

您需要将您的长时间运行的代码放到一个后台线程。 UI线程上的长时间运行的代码会锁定用户界面,导致用户认为应用程序被冻结/崩溃。看看使用AsyncTask。这使您可以在后台线程上运行进程,并提供视觉反馈,让用户知道您的应用程序正在运行。

1

使用ProgressDialog设计布局。使用setContentView(Progressdialog)。计算2-4秒的时间(您选择)再次在setContentView中设置旧版本。你为什么不使用AsyncTask?

1

使用条形图或圆形活动指示器。来自the official design guide

活动指标用于不确定长度的操作。 他们要求用户等待一会儿,而没有 深入了解幕后发生的事情。