android - 如何在android中动态高效地切换activity?

标签 android android-intent android-activity

我正在开发一款 Android 游戏,其中有近 50 个级别,每个级别代表一个 activity 。例如。 Level1, Level2...Level50。 完成每个级别后,我将切换到 LevelUpActivity,在这里我会显示玩家的当前分数和级别以及 Level Up 消息。单击按钮我将切换到游戏的下一个级别。现在我的问题是,当我拥有当前级别编号时,如何切换到下一个 activity(级别)? 例如。假设我已经清除了 Level2 然后我想从 LevelUpActivity 跳到 Level3 有什么有效的方法可以做到这一点?目前,我通过使用 Switch Case 语句成功完成了这项任务。但是它会有效地处理 50 或更多的数字来检查然后相应地切换 Activity 吗? 以下代码 fragment 显示了 LevelUpActivity

的类定义
public class LevelUpActivity extends Activity implements View.OnClickListener {
Button btn_continue;
TextView scoreview, levelview;
int score, level;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.level_up);

    Intent intent = getIntent();
    Bundle bundle = intent.getExtras();
    score = bundle.getInt("score");
    level = bundle.getInt("levelno");
    System.out.println("Current Score = " + score);

    levelview = (TextView) findViewById(R.id.levelView);
    levelview.setText("Level " + level + " Completed");
    scoreview = (TextView) findViewById(R.id.score);
    scoreview.setText(score + "");

    btn_continue = (Button) findViewById(R.id.levelbtn);
    btn_continue.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    if (v.getId() == R.id.levelbtn) {
        Intent i;
        switch (level) {
            case 1:
                i = new Intent(this, Level2.class);
                i.putExtra("score", score);
                startActivity(i);
                break;

            case 2:
                i = new Intent(this, Level3.class);
                i.putExtra("score", score);
                startActivity(i);
                break;

            case 3:
                i = new Intent(this, Level3.class);
                i.putExtra("score", score);
                startActivity(i);
                break;
      }
    }
  }
}

最佳答案

switch 语句的性能不会随着语句数量的增加而显着降低。不过,switch 语句会非常长。

假设每个 level Activity 都遵循相同的界面(即它们只接受“分数”而不接受其他任何东西),那么您可以将所有级别放在一个数组中。

private static final Class<Activity>[] levels = [
   Level1.class,
   Level2.class,
   Level3.class,
   ...
   Level4.class
]

然后像这样检索它们:

int levelNumber = someMethodToGetLevelNumber();
Class<Activity> levelClass = levels[levelNumber]; 
Intent i = new Intent(this, Level2.class);
i.putExtra("score", score);
startActivity(i);

关于android - 如何在android中动态高效地切换activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45176691/

相关文章:

Android - 重新启动 Activity 而无需重新创建它

android - 如何查看是否有后台任务在运行?

android - RxJava2 如何将 Single 链接到 Completable,以便在 Completable 完成时订阅它

android - 自定义项目 ListView ,在 TextView 的最后一个字符之后带有 ImageView

java - Android计算器App的良好做法?

android - 相机 Intent 捕获的图片文件在onActivityResult中暂时为空

android - 生成 apk 时包含第 3 方 android 库的哪一部分?

java - 设置按钮在具有首选项设置的另一个 Activity 中可见

android - event.getSource() 在 android 中返回空辅助功能

android - 如何获取android :configChanges values from ActivityInfo class