当前位置: 代码迷 >> Android >> Android Java Runnable,当满足Runnable中的条件时,如何打开另一个活动?
  详细解决方案

Android Java Runnable,当满足Runnable中的条件时,如何打开另一个活动?

热度:130   发布时间:2023-08-04 10:16:03.0

首先,我实际上是android开发的新手。

我一直在尝试构建一个简单的游戏,玩家必须在时间用完之前执行一次动作(用进度条表示)。 如果玩家成功执行该行为,则他或她会获得更多时间。

进度条的清空是通过可运行的(参见下文)完成的

final ProgressBar time = (ProgressBar) findViewById(R.id.time_left);   
final Runnable timer = new Runnable() {
        @Override
        public void run() {
            time.setProgress(time.getProgress() - 4);
            int ProgressRemaining = time.getProgress();
            if (ProgressRemaining == 0) {
                h.removeCallbacks(null);
                YouLose();
            }
            h.postDelayed(this, 10);
        }
    };

(介于两者之间的代码)

public void YouLose() {
    Intent i = new Intent(this, youLose.class);
    startActivity(i);
    finish();
}

在每个循环中,可运行程序都会检查进度条是否为零。 问题是我希望应用程序在玩家到达该点后开始新的活动,我学到了很难的方法,即以这种方式开始新的活动会导致巨大的滞后和/或崩溃。

播放器时间用完了,有人可以帮助我如何开始新的活动吗? (我知道我做过一些愚蠢的事,不要害怕告诉我应该如何真正地执行此类操作。)

先感谢您

我建议使用一个名为EventBus的程序。

当ProgressRemaining为0时,您可以像这样调用一个简单而快速的EventBus方法。

EventBus.getDefault().post(progressRemaining);

...并且在您的Activity或base Activity中有一个简单的接收方法,如下所示;

@SuppressWarnings("unused")
public void onEventMainThread(int progressRemaining){
    youLose();
}

这样做可以弥合背景线程和前景线程之间的差距。

您的Application类中需要进行少量的其他设置,但这全部记录在其GitHub页面上。 我还建议您创建一个名为ProgressReachedZeroEvent类的空事件类,并将其传递到EventBus帖子中,而不要传递回int,这样您就可以更好地控制哪个事件读取您的帖子(如果您的应用程序中有其他onEvent,在将来。

另外,您应该以小写字母开头您的方法和变量。 仅类别名称应以大写字母开头。

编辑 :从重新阅读您的问题,看来您不是在尝试从后台线程启动Activity 因此,请忽略我已回答的内容。 看来您为开始一个新的Activity所做的一切都很好,能否详细说明自己的经历? 滞后可能是其他原因造成的,而不是您开始下一个Activity 如果您每次都崩溃。 确保已在AndroidManifest.xml文件中声明了新的Activity 发布崩溃报告将帮助您更快地解决问题。

我建议这样做:

Timer timer;

private void setup() {
    timer = new Timer();
    timer.schedule(new TimerTask() {

        @Override
        public void run() {
                // your code goes here
            );
        }

    },0,1000);  // update every second
}

...并停止Timer

if (timer != null) {
     timer.cancel();
     timer = null;
 }
  相关解决方案