在Android应用程序中,当第一个活动从第一个活动被调用时,我想在两个活动之间放置进度条,这样应用程序似乎处于运行状态,我认为这样的事情是通过线程完成的,如果有人知道的话请帮助我这个..
提前致谢。
答案 0 :(得分:4)
Kartik是对的,但是让我添加更多内容以显示Progressbar内部活动。
如果您想显示Progressbar以及在后台获取数据,您应该在第二个活动中实现AsyncTask。
以下是一个例子:
private class performBackgroundTask extends AsyncTask <Void, Void, Void>
{
private ProgressDialog Dialog = new ProgressDialog(ClassName.this);
protected void onPreExecute()
{
Dialog.setMessage("Please wait...");
Dialog.show();
}
protected void onPostExecute(Void unused)
{
try
{
if(Dialog.isShowing())
{
Dialog.dismiss();
}
// do your Display and data setting operation here
}
catch(Exception e)
{
}
@Override
protected Void doInBackground(Void... params)
{
// Do your background data fetching here
return null;
}
}
添加此performBackgroundTask类后,无论何时执行,都需要调用 execute()
。
答案 1 :(得分:3)
您必须使用AsyncTask或Thread来获取所选数据的详细信息。通过使用它,您可以解决在两个活动之间显示进度条的问题。
AsyncTask基本示例:AsyncTask
private class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
// perform long running operation operation
return null;
}
/* (non-Javadoc)
* @see android.os.AsyncTask#onPostExecute(java.lang.Object)
*/
@Override
protected void onPostExecute(String result) {
// execution of result of Long time consuming operation
}
/* (non-Javadoc)
* @see android.os.AsyncTask#onPreExecute()
*/
@Override
protected void onPreExecute() {
// Things to be done before execution of long running operation. For example showing ProgessDialog
}
/* (non-Javadoc)
* @see android.os.AsyncTask#onProgressUpdate(Progress[])
*/
@Override
protected void onProgressUpdate(Void... values) {
// Things to be done while execution of long running operation is in progress. For example updating ProgessDialog
}
}
答案 2 :(得分:1)
在android中只有主线程,也称为UI线程,可以进行UI操作。因此,您无法从新线程中显示进度条。 我认为你的问题的解决方案可能会显示你的第二个活动(可能是空的),从onCreate()显示进度对话框,然后在活动中做任何繁重的工作。 希望这会有所帮助。
答案 3 :(得分:1)
只需在进行计算的活动中制作ProgressDialog。
ProgressDialog progressDialog = ProgressDialog.show(context, title, text);
当你的任务完成后关闭它
if(progressDialog != null && progressDialog.isShowing())
progressDialog.dismiss();
但请务必从UI线程中显示和关闭对话框。对于这种情况,AsyncTask可能是最好的解决方案