启动具有特定活动的Android App

时间:2011-11-03 01:04:11

标签: android android-activity sharedpreferences launch

当应用启动或恢复时,我想根据“SharedPrefences”中设置的变量将用户重定向到特定的“活动”。

要做到这一点,我正在考虑使用一种方法来检查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);
}

这意味着用户在技术上无法返回上一个Activity,因为当他们调用它时,它会调用onResume,并且它将被重定向到与当前用户对应的状态。

我认为这可能会导致一些循环错误 - 有更好的方法吗?

2 个答案:

答案 0 :(得分:5)

我认为这是正常的方法,除了你还可以添加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();
  }
}

答案 1 :(得分:1)

请确保根据导航活动更新偏好设置值。这将节省您对Activity启动的不必要检查。

相关问题