gpt4 book ai didi

Android 切换按钮崩溃

转载 作者:行者123 更新时间:2023-12-02 06:00:19 25 4
gpt4 key购买 nike

我试图在选中切换按钮时发出间隔播放的声音。单击切换按钮后,我的应用程序不播放任何声音并崩溃。为什么?

代码:

    int bpm;
double timetw;
final Button plus = (Button) findViewById(R.id.tempop);
final Button minus = (Button) findViewById(R.id.tempom);
final TextView curbpm = (TextView) findViewById(R.id.curbpm);
final ToggleButton metronomepp = (ToggleButton) findViewById (R.id.metronomepp);
final MediaPlayer metronome = MediaPlayer.create(this, R.raw.beep);
bpm=60;
timetw=((60/bpm)-0.19)*10000;
curbpm.setText("" + bpm);

Log.i("Metronome1", ""+metronomepp.isChecked());

metronomepp.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
while (metronomepp.isChecked()) {
metronomepp.postDelayed(new Runnable() {
@Override
public void run() {
Log.i("Metronome", "InWhile");
if (metronome.isPlaying()) {metronome.pause();}
metronome.seekTo(0);
metronome.setOnSeekCompleteListener(null);
metronome.start();
metronome.setOnCompletionListener(null)
}
}, (long) (timetw));
}
}
});

按下切换按钮后的 LogCat:

03-14 22:54:17.094: D/dalvikvm(25418): GC_CONCURRENT freed 101K, 3% free 9518K/9735K, paused 3ms+3ms
03-14 22:54:18.019: D/dalvikvm(25418): GC_CONCURRENT freed 5K, 2% free 9923K/10055K, paused 2ms+2ms
03-14 22:54:19.744: D/dalvikvm(25418): GC_CONCURRENT freed 0K, 2% free 10312K/10439K, paused 1ms+1ms
03-14 22:54:23.039: D/dalvikvm(25418): GC_CONCURRENT freed 0K, 2% free 10759K/10887K, paused 1ms+1ms

最佳答案

您遇到的根本问题是您正在 UI 线程中执行长时间操作。 onCheckedChanged 应该派生一个线程或 Async 类,这将发出滴答声直到停止。最好还是有一个线程来发出滴答声,您可以从 onCheckedChanged 打开和关闭该滴答声。

@Torben-Kohlmeier 对您的问题的回答中可能给出了实现此目的的最佳方法,我对其进行了编辑以明确它如何适合您的代码。

关于Android 切换按钮崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15420877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com