Вопрос по android – Отображать индикатор выполнения при загрузке

0

У меня есть одна кнопка в main.xml, которая будет ссылаться на другой XML, который включает в себя информацию с сервера. Я включаю индикатор выполнения, чтобы избежать пустого экрана, пока система загружает информацию. Я уже сделал код, как показано ниже, но это все еще не то, что я хотел. приведенный ниже код будет "ПОДОЖДАТЬ" в течение 1000 мс только тогда выполнит следующий код. Как я могу изменить его так, чтобы загрузка "ПОДОЖДИТЕ ВРЕМЯ"? будет зависеть от скорости интернета, если интернет медленный, то индикатор выполнения будет отображаться дольше.

package com.android.myApps;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.TextView;

public class MainScr extends Activity {

    private final int WAIT_TIME = 1000;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {       
        super.onCreate(savedInstanceState);     
        setContentView(R.layout.MainScr);       
    }   

    public void onClickCategory(View view)
    {
        findViewById(R.id.mainSpinner1).setVisibility(View.VISIBLE);
        new Handler().postDelayed(new Runnable(){
            @Override
                public void run() {                          
                      Intent mainIntent = new Intent(MainScr.this, Category.class); 
                      MainScr.this.startActivity(mainIntent); 
                      MainScr.this.finish(); 
                      } 
            }, WAIT_TIME);
    }
}
Вы пробовали Asyntask? Tai Tran
Я предполагаю, что мойanswer поможет вам :) Lucifer

Ваш Ответ

2   ответа
2

м интерфейсе.

public final class HttpTask
        extends
        AsyncTask<String/* Param */, Boolean /* Progress */, String /* Result */> {

    private HttpClient mHc = new DefaultHttpClient();

    @Override
    protected String doInBackground(String... params) {
        publishProgress(true);
        // Do the usual httpclient thing to get the result
        return result;
    }

    @Override
    protected void onProgressUpdate(Boolean... progress) {
        // line below coupled with 
        //    getWindow().requestFeature(Window.FEATURE_INDETERMINATE_PROGRESS) 
        //    before setContentView 
        // will show the wait animation on the top-right corner
        MyActivity.this.setProgressBarIndeterminateVisibility(progress[0]);
    }

    @Override
    protected void onPostExecute(String result) {
        publishProgress(false);
        // Do something with result in your activity
    }
}
12

которую вы делаете здесь, заключается в том, что вы добавляете определенное время в ваш код Вы никогда не знаете, сколько потребуется, чтобы получить ответ. Вы должны следовать следующему подходу

Шаг 1 Показать диалог прогресса на экране

Шаг 2 Пусть загрузка займет свое время. Но это должно быть сделано в новой теме

Шаг 3 После завершения загрузки появится сообщение о том, что задача выполнена, теперь удалите ее.        прогрессировать диалог и продолжить.

Я вставляю пример кода здесь. Надеюсь, это поможет вам.

package com.android.myApps;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

public class MainScr extends Activity
{
    private Handler handler;
    private ProgressDialog progress;
    private Context context;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        context = AncActivity.this;
        progress = new ProgressDialog(this);
        progress.setTitle("Please Wait!!");
        progress.setMessage("Wait!!");
        progress.setCancelable(false);
        progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);

        handler = new Handler()
        {

            @Override
            public void handleMessage(Message msg)
            {
                progress.dismiss();
                Intent mainIntent = new Intent(context, Category.class);
                startActivity(mainIntent);
                super.handleMessage(msg);
            }

        };
        progress.show();
        new Thread()
        {
            public void run()
            {
                // Write Your Downloading logic here
                // at the end write this.
                handler.sendEmptyMessage(0);
            }

        }.start();

    }

}
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded melvintcs
Error: User Rate Limit ExceededCategoryError: User Rate Limit ExceededCategoryError: User Rate Limit ExceededLoggerError: User Rate Limit Exceeded

Похожие вопросы