java - 如何在 Activity onPause 时停止线程?

标签 java android multithreading

因此,有一个 5 秒的启动屏幕,但底部还有一个跳过按钮。这就是启动画面的运行方式。

public class Splash extends Activity implements View.OnClickListener {

MediaPlayer splashsong;
Button skipsplash;

@Override
protected void onCreate(Bundle chiefsplash) {
    // TODO Auto-generated method stub
    super.onCreate(chiefsplash);
    setContentView(R.layout.splash);

    splashsong = MediaPlayer.create(Splash.this, R.raw.jingle);
    splashsong.start();
    skipsplash = (Button) findViewById(R.id.skipsplash);

    skipsplash.setOnClickListener(this);

    Thread splashtimer = new Thread() {
        public void run() {
            try {
                sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                switchactivity();
            }
        }
    };

    splashtimer.start();
}

@Override
public void onClick(View skipbutton) {
    switchactivity();
}

private void switchactivity() {
    Intent aftersplash = new Intent("com.example.testapp.MENU");
    startActivity(aftersplash);
}

@Override
protected void onPause() {

    super.onPause();
    splashsong.release();
    finish();
}

}

现在我希望有一个选择可以点击skip按钮来中断5秒的等待,我想不是在线程运行时。那么,当我点击 skip 按钮后会发生什么:一旦 Activity 创建后 5 秒过去,它将打开 Menu Activity,无论我是否已经在那里或其他地方。无论如何要阻止这一切吗?

最佳答案

您是否尝试使用处理程序

          Handler h = new Handler();
          h.postDelayed(runnable, delayMillis);

在runnable的run方法中调用switchactivity()。 在 onClick() 中删除该可运行的所有回调

h.removeCallbacks(runnable);

关于java - 如何在 Activity onPause 时停止线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16247571/

相关文章:

java - 从 Marshmallow 升级到 Nougat 后,Android 方法性能突然变慢

java - 如何摆脱缩进以及如何告诉 Simple xml 框架,在序列化对象时不要转换“to”

android - amazon simpleDB 是否适用于检查 android 应用程序的试用状态?

Android getStringArray 只返回小写

java - OnItemClickListener 未给出单击项目的索引

multithreading - 将多个线程绑定(bind)到多个 CPU?

c - 简单套接字监听器和线程内存泄漏

java - JBoss envers 和巨大的审计表

java - 在java中递归交换字符串中的字母对

java - 如何开始使用当前 GlassFish 解决方案的 Google App Engine