Android:如何在从另一个 activity 调用时更快地加载 activity,即使在第二个 activity 中加载多个内容
Android : How to load an activity faster when calling it from another activity, even while loading several contents in the second activity
我是 java 和 android 的新手,所以我在这里问这些问题是为了了解它应该如何工作。
我的应用程序中有 2 个活动,即 Welcome_Activity.java
和 Content_Activity.java
第一个 Activity 工作顺利,但是当从 Welcome_Activity(First Activity)
调用 Content_Activity(Second Activity)
时出现问题
在Second Activity
的onCreate
中,我认为内容太多导致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);
}
}
你应该看看Asyntask。它可以帮助您 load/do 通过在后台线程中执行需要花费一些时间的任务。这将有助于您的 Activity(UI) 不会生涩。
我假设您正在使用 ResumeGame
和 LoadGame
方法从网络服务或本地应用程序存储中获取数据;如果是这样,请尝试在主线程(UI 线程)以外的地方获取数据,并在您获得数据后立即尝试在 UI 线程上传递此数据。为你(初学者)做这件事的最好方法是使用 AsyncTask,AsyncTask
中可用的回调可能是:
doInBackground
: 在这里写你的代码来获取数据
onPostExecute
:您可以在此处填写 UI 视图,例如按钮标签、TextView
的文本
希望这对您提高性能有所帮助。
我是 java 和 android 的新手,所以我在这里问这些问题是为了了解它应该如何工作。
我的应用程序中有 2 个活动,即 Welcome_Activity.java
和 Content_Activity.java
第一个 Activity 工作顺利,但是当从 Welcome_Activity(First Activity)
Content_Activity(Second Activity)
时出现问题
在Second Activity
的onCreate
中,我认为内容太多导致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);
}
}
你应该看看Asyntask。它可以帮助您 load/do 通过在后台线程中执行需要花费一些时间的任务。这将有助于您的 Activity(UI) 不会生涩。
我假设您正在使用 ResumeGame
和 LoadGame
方法从网络服务或本地应用程序存储中获取数据;如果是这样,请尝试在主线程(UI 线程)以外的地方获取数据,并在您获得数据后立即尝试在 UI 线程上传递此数据。为你(初学者)做这件事的最好方法是使用 AsyncTask,AsyncTask
中可用的回调可能是:
doInBackground
: 在这里写你的代码来获取数据onPostExecute
:您可以在此处填写 UI 视图,例如按钮标签、TextView
的文本
希望这对您提高性能有所帮助。