求助,新学 android,有个问题,望解答,谢谢

2020-11-05 08:51:35 +08:00
 unixiya

如何实现点击返回键,退出一个 while 循环。

public void clickPlay(){
    SoundPool mSoundPool =  new SoundPool(1, AudioManager.STREAM_SYSTEM, 5);
    mSoundPool.load(this,R.raw.shuidi,1);

    int count = 0;
    while (!result) {
        keyevent_bool = keyCode != 0;
        if (keyevent_bool) {
            
            break;
        }
        try {

            mSoundPool.play(1, (float) 0.01, (float) 0.01, 0, 0, 1);
            Thread.sleep(1 * 1000); //设置暂停的时间 1 秒
            mSoundPool.stop(1);
            count++;
        } catch (InterruptedException e) {
            e.printStackTrace();
        }


    }
    mSoundPool.release();
}

@Override
public void onBackPressed() {
    super.onBackPressed();
    keyCode = KeyEvent.KEYCODE_BACK;
}
822 次点击
所在节点    问与答
4 条回复
yejianmail
2020-11-05 09:15:54 +08:00
现在 Android 的架构好多都是 mvvm,可以观察 livedata 的状态变化,或者你把播放器做成一个状态机,在循环里根据状态变化做不同的事,点击后改变状态
L5411
2020-11-05 09:35:30 +08:00
看代码不是已经实现了功能
Melodyer
2020-11-05 09:36:59 +08:00
你这 Thread.sleep 没有放到子线程,直接放在主线程会卡 UI 的。
unixiya
2020-11-05 10:51:37 +08:00
谢谢大家啦,找到方法了,
Executors 创建可定时的线程 newScheduledThreadPool

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/721885

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX