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. Это поможет вам загрузить / выполнить задачу, которая занимает некоторое время, выполняя ее в фоновом потоке. Это помогло бы вашей активности (пользовательскому интерфейсу) не быть рывком.