1

Я хочу отобразить индикатор выполнения, который загружается при подключении к Интернету на экране логотипа. Я использую ниже класс, чтобы проверить подключение к Интернету:Отображение рабочего колеса на главном экране при подключении к Интернету [Android]

public class AppStatus { 
    public boolean isNetworkAvailable(final Context context) { 
     final ConnectivityManager connectivityManager = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)); 
     return connectivityManager.getActiveNetworkInfo() != null && connectivityManager.getActiveNetworkInfo().isConnected(); 
    } 
} 

Код экрана с индикатором хода является:

public class logo_activity extends AppCompatActivity { 
    private ProgressBar mProgress; 
    private int mProgressStatus = 0; 
    private Handler mHandler = new Handler(); 
    private AppStatus con = new AppStatus(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_logo_activity); 
     mProgress = (ProgressBar) findViewById(R.id.progressBar); 

     new Thread(new Runnable() { 
      public void run() { 
       if (con.isNetworkAvailable(getApplicationContext())) 
       { 
        mProgressStatus += 10; 
        //user authentication in background. 
       } 
       else { 
        mProgressStatus +=10; 
        // Display an alert dialog box to connect to internet by launching into settings activity. 
       } 

       // Update the progress bar 
       mHandler.post(new Runnable() { 
        public void run() { 
         mProgress.setProgress(mProgressStatus); 
        } 
       }); 
      } 
     }).start(); 

    } 
} 

Проблемы я столкнулся в том, что диалоговое окно с предупреждением не отображается и когда я запускаю деятельность в настройки и выхожу без включения Интернета, экран застревает только при загрузке экрана. Также может кто-то, пожалуйста, написать для него метод asynctask. Кажется, я не могу обойти это.

Спасибо.

ответ

0

проблема заключается в том, что созданный вами новый поток по-прежнему работает в потоке пользовательского интерфейса, поэтому ничего не отображается, поскольку ваш пользовательский интерфейс заблокирован. вам нужно использовать AssyncTask. here - это учебник.

+0

Так что же мне делать? Я проверю tut на async-задачу. Должен ли я использовать async-задачу для такой задачи? –

+0

@KavachChandra Задачи, которые слишком долго выполняются (например, доступ в Интернет), не должны запускаться в потоке пользовательского интерфейса, или вы увидите задержки на экране. вместо этого вы должны запускать их асинхронно. , связанный с потоками (concurency), является довольно сложной задачей, поэтому андроид предоставляет предустановленные классы, такие как AssyncTask и FutureTask, для упрощения параллелизма. каждый раз, когда вы асинхронны, вам лучше использовать AssyncTask. –

+0

@KavachChandra плюс принять мой ответ, если это вам помогло. –

 Смежные вопросы

  • Нет связанных вопросов^_^