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.javaContent_Activity.java

第一个 Activity 工作顺利,但是当从 Welcome_Activity(First Activity)

调用 Content_Activity(Second Activity) 时出现问题

Second ActivityonCreate中,我认为内容太多导致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) 不会生涩。

我假设您正在使用 ResumeGameLoadGame 方法从网络服务或本地应用程序存储中获取数据;如果是这样,请尝试在主线程(UI 线程)以外的地方获取数据,并在您获得数据后立即尝试在 UI 线程上传递此数据。为你(初学者)做这件事的最好方法是使用 AsyncTaskAsyncTask 中可用的回调可能是:

  • doInBackground: 在这里写你的代码来获取数据
  • onPostExecute:您可以在此处填写 UI 视图,例如按钮标签、TextView
  • 的文本

希望这对您提高性能有所帮助。