Android: как быстрее загрузить действие при вызове его из другого действия, даже при загрузке нескольких материалов во втором упражнении

Я новичок в Java и Android, поэтому я задаю такие вопросы здесь, чтобы понять, как это должно работать.

У меня есть 2 действия в моем приложении, а именно Welcome_Activity.java а также Content_Activity.java

Первое задание работает гладко, но проблема возникает, когда Content_Activity(Second Activity) вызывается из Welcome_Activity(First Activity)

в onCreate из Second ActivityЯ думаю, что слишком много содержимого вызывает слишком медленную загрузку Activity.

Как решить эту проблему?

Пример:

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

    setContentView(R.layout.activity_Puzzle_game);

    q1_tv = (TextView) findViewById(R.id.q1_tv);
    q2_tv = (TextView) findViewById(R.id.q2_tv);
    q3_tv = (TextView) findViewById(R.id.q3_tv);
    q4_tv = (TextView) findViewById(R.id.q4_tv);
    q5_tv = (TextView) findViewById(R.id.q5_tv);
    q6_tv = (TextView) findViewById(R.id.q6_tv);
    q7_tv = (TextView) findViewById(R.id.q7_tv);
    q8_tv = (TextView) findViewById(R.id.q8_tv);
    q9_tv = (TextView) findViewById(R.id.q9_tv);
    q10_tv = (TextView) findViewById(R.id.q10_tv);

    bt1 = (Button) findViewById(R.id.bt1);
    bt2 = (Button) findViewById(R.id.bt2);
    bt3 = (Button) findViewById(R.id.bt3);
    bt4 = (Button) findViewById(R.id.bt4);
    bt5 = (Button) findViewById(R.id.bt5);
    bt6 = (Button) findViewById(R.id.bt6);
    bt7 = (Button) findViewById(R.id.bt7);
    bt8 = (Button) findViewById(R.id.bt8);
    bt9 = (Button) findViewById(R.id.bt9);
    bt10 = (Button) findViewById(R.id.bt10);

    SP = getSharedPreferences("saved_data", MODE_PRIVATE);
    solved = SP.getInt("solved", 0);

    // LoadLevel & ResumeGame is just a method to get data from another class that have array Strings to fill the textviews and buttons 

    if (solved > 0) {
        ResumeGame(null);
    }
    else {
        LoadLevel(null);
    }
}

2 ответа

Решение

Я полагаю, вы получаете данные в ResumeGame & LoadGame методы из веб-служб или из локального хранилища приложений; если это так, попробуйте выполнить выборку, отличную от основного потока (потока пользовательского интерфейса), и как только вы получите данные, попробуйте передать эти данные в поток пользовательского интерфейса. Лучший способ сделать это для вас (новичок) - использовать AsyncTask, полезные обратные вызовы в AsyncTask может быть:

  • doInBackground: здесь напишите свой код, чтобы получить данные
  • onPostExecute: Здесь вы можете заполнить ваши представления пользовательского интерфейса, такие как метка кнопки, текст TextView

Я надеюсь, что это поможет вам улучшить производительность.

Вы должны посмотреть в Asyntask. Это поможет вам загрузить / выполнить задачу, которая занимает некоторое время, выполняя ее в фоновом потоке. Это помогло бы вашей активности (пользовательскому интерфейсу) не быть рывком.

Другие вопросы по тегам