代码之家  ›  专栏  ›  技术社区  ›  Fadi A.

Android:如何在从另一个活动调用时更快地加载一个活动,即使在第二个活动中加载多个内容

  •  -1
  • Fadi A.  · 技术社区  · 7 年前

    我的应用程序中有2个活动,即 Welcome_Activity.java Content_Activity.java

    第一个活动工作顺利,但问题出现在 Content_Activity(Second Activity) 从调用 Welcome_Activity(First Activity)

    onCreate 属于 Second 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 回复  |  直到 7 年前
        1
  •  -1
  •   Anshuman Jaiswal    7 年前

    我假设您正在获取数据 ResumeGame & LoadGame 来自web服务或本地应用程序存储的方法;如果是这样,请尝试在主线程(UI线程)之外的其他线程中执行抓取操作,一旦获得数据,请尝试在UI线程上传递此数据。为您(初学者)使用的最佳方法 AsyncTask ,中的可用回调 AsyncTask

    • doInBackground :在这里编写代码以获取数据
    • onPostExecute :在这里,您可以填充UI视图,如按钮标签、文本 TextView

        2
  •  -1
  •   nđq    7 年前

    你应该去看看 Asyntask . 通过在后台线程中执行,它可以帮助您加载/执行需要一些时间的任务。这将有助于你的活动(UI)不会急促。