首页 > 解决方案 > 如何在 switch case 中使用多个 postDelayed 处理程序来显示图片

问题描述

我正在开发一个语音识别应用程序,如果我说一些特定的词,它会显示一张图片。我目前在每种情况下都使用 postDelayed 处理程序,因此每张图片之间都有一些延迟。问题是,如果我说 2 个或更多单词,只会显示最后一张图片。这是代码:

private void imageLoader(String resultSpeech){
    final Handler handler = new Handler();
    String[] resultSplit = resultSpeech.split("\\s");
    for (int i=0; i < resultSplit.length; i++) {
        switch(resultSplit[i]) {
            case "hello":
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        loadImage("www.example.com/hello.jpg");
                    }
                }, 3000);
                break;

            case "bye":
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        loadImage("www.example.com/bye.jpg");
                    }
                }, 3000);
                break;
            }
        }
    }

这个是针对语音识别结果的:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {
        case REQ_CODE_SPEECH_INPUT: {
            if (resultCode == RESULT_OK && null != data) {

                ArrayList<String> result = data
                        .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
                txtSpeechInput.setText(result.get(0));
                String resultSpeech = result.get(0);
                imageLoader(resultSpeech);
            }
            break;
        }
    }
}

标签: javaandroidandroid-handler

解决方案


推荐阅读