我的任务很长,需要10/15秒。我想显示一个对话框,一个视图或其他东西让用户知道“嘿!我在为你工作。我90%”。
实际上我有3个布局:currentLayout,progressLayout和resultLayout。从主要活动我有这样的功能:
...
setContentView(R.layout.progressLayout );
SomeLongTask();
setContentView(R.layout.resultLayout);
...
但progressLayout从未显示过。
最好的方法是什么?
答案 0 :(得分:4)
您正在用户界面线程中启动长任务。该线程还负责重绘UI并对输入事件进行操作。如果对长任务函数进行阻塞调用,则UI线程将忙于执行任务,并且用户界面无法更改。 Android系统甚至会认为您的应用程序崩溃了,因为它不再对用户输入作出反应。
您必须在AsyncTask中启动任务,并在doInBackground方法中执行所有繁重的工作,并在onPostExecute方法中更新UI。这样,UI线程将启动任务,然后返回更新界面并对用户事件进行操作。