2016-05-26 3 views
3

Я создал активность запуска, из которой я вызываю другую активность, которая имеет пейджер представления и показывает некоторые вводные страницы.Запуск или действие занимает некоторое время, чтобы загрузить несколько раз

Это приложение занимало время для загрузки, поэтому я думал отображать диалог прогресса до загрузки активности, но этот диалог прогресса также появляется несколько секунд спустя.

стартап активность:

public class StartUpActivity extends AppCompatActivity { 
    boolean isUserFirstTime, login; 
    public static String PREF_USER_FIRST_TIME; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     isUserFirstTime = Boolean.valueOf(Utils.readSharedSetting(StartUpActivity.this, PREF_USER_FIRST_TIME, "true")); 
     Intent introIntent = new Intent(StartUpActivity.this, SlidingActivity.class); 
     introIntent.putExtra(PREF_USER_FIRST_TIME, isUserFirstTime); 

     ProgressDialog dialog = new ProgressDialog(StartUpActivity.this); 
     dialog.setMessage("Welcome to Mea Vita, please wait till the app loads."); 
     dialog.setCancelable(false); 
     dialog.setInverseBackgroundForced(false); 
     dialog.show(); 

     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       //Here you can send the extras. 

       startActivity(new Intent(StartUpActivity.this,SlidingActivity.class)); 

       // close this activity 
       finish(); 
      } 
     }, 4000); 
    } 
} 

Это не происходит каждый раз, только иногда. Какая может быть причина? как я могу это остановить? Любое решение? Спасибо ..

+1

Вы используете Android 2.0 студию? если так отключить мгновенный запуск, и он будет исправлен. http://stackoverflow.com/questions/36623917/first-launch-take-long-time-in-android-studio-2-0-gradle-2-0 – Amir

+0

Как это сделать? @Amir – Sid

+1

Настройки → Сборка, выполнение, развертывание → Мгновенный запуск и снятие флажка Включить мгновенный запуск – Amir

ответ

4

Проблема с недавно выпущенной Android Studio 2.0 (эта же проблема в версии 2.1) при первом запуске приложения занимает больше времени, чем обычно (например, 2, 3 секунды или иногда на экране мигает или идет черным) эта проблема возникает только в режиме отладки и не влияет на ваш выпущенный APK.

Временное решение, чтобы исправить это отключение instant run:

Settings → Build, Execution, Deployment → Instant Run and uncheck Enable Instant Run 
2

Есть несколько вещей, которые могут медленно загружаться.

  1. Android необходимо прочитать ваш код из хранилища и загрузить классы в плунжер.
  2. Предполагаю, что Utils.readSharedSetting(StartUpActivity.this, PREF_USER_FIRST_TIME, "true") читает из предпочтений. Это файл, который вы читаете синхронно.
  3. На самом деле запуск диалога занимает очень мало времени.

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

Кроме того, вы можете хранить PREF_USER_FIRST_TIME в качестве boolean вместо String.

3

Прежде всего, сделайте как правило, чтобы выполнить всю загрузку данных в задачах async, вы должны проверить активность, с которой вы хотите начать загрузку данных.

Проблема заключается в вашей второй деятельности. oncreate метод следует использовать только для изготовления findviews или начать async tasks, не загружайте его в oncreate или в onstart или в onresume. Возможно, вы загружаете изображения с высоким разрешением в скользящем макете или загружаете в него данные.

Существует другой способ: загрузить все данные в async-задачу при первом действии, а затем с готовностью начать второй запуск данных с уже загруженными данными.

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