簡體   English   中英

啟動具有特定活動的Android應用

[英]Launch Android App with Specific Activity

當應用啟動或恢復時,我想基於“ SharedPrefences”中設置的變量將用戶重定向到特定的“ Activity”。

為此,我正在考慮使用一種方法來檢查SharedPreferences狀態變量並重定向到正確的活動:

private void launchRedirect(Context ctxt) {

    Integer status = AppPreferences.getStatus(this);
    Intent i =  new Intent(MainActivity.this, Activity1.class);

    switch (status) {
    case 0:
        i =  new Intent(MainActivity.this, Activity2.class);
    case 1:
        i =  new Intent(MainActivity.this, Activity3.class);
    case 2:
        i =  new Intent(MainActivity.this, Activity4.class);
    case 3:
        i =  new Intent(MainActivity.this, Activity5.class);    
    }
    startActivity(i);
}

然后,我可以為應用程序中的每個活動在每個“ onResume”方法中調用此方法:

    public void onResume(Bundle savedInstanceState) {
    launchRedirect(this);
}

這將意味着用戶從技術上講不能返回上一個活動,因為當他們調用它時,它會調用onResume,它將被重定向到與當前用戶相對應的狀態。

我認為這可能會導致一些循環錯誤-有更好的方法嗎?

我相信這是正常的方法,除非您還可以添加finish()方法的調用,如果您需要在這種情況下關閉MainActivity的話。

此外,不要忘記break語句:

private void launchRedirect(Context ctxt) {

  Integer status = AppPreferences.getStatus(this);
  Intent i =  new Intent(MainActivity.this, Activity1.class);

  switch (status) {
  case 0:
    i =  new Intent(MainActivity.this, Activity2.class);
    break;
  case 1:
    i =  new Intent(MainActivity.this, Activity3.class);
    break;
  case 2:
    i =  new Intent(MainActivity.this, Activity4.class);
    break;
  case 3:
    i =  new Intent(MainActivity.this, Activity5.class);  
    break;  
  }
  startActivity(i);
  if (/* check if MainActivity should be closed */) {
    finish();
  }
}

請確保您正在根據導航活動更新首選項值。 這將節省您不必要的活動啟動檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM