加载视频直播Android时,应用程序挂起/停止响应

时间:2014-06-26 02:28:58

标签: android http-live-streaming

我快速加载视频时能够很好地观看视频。但是当视频加载太长时,特别是当互联网连接太慢时,它会停止响应,其中按钮根本不起作用,按下后退按钮也不起作用。有时候,当我长时间观看视频时也会发生这种情况,例如大约25分钟。我的Logcat上没有消息。那么我应该做些什么来避免这种情况呢?谢谢你的帮助。

顺便说一句,我正在使用videoview播放视频。应用程序的最小targetVersion为11。 以下是我的代码

public class MyClass extends Fragment implements OnCompletionListener,  OnErrorListener{

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.movie, container, false);

        myVideo = (VideoView)view.findViewById(R.id.myVideo);
        myVideo.setOnErrorListener(this);
        myVideo.setOnCompletionListener(this);

        Thread background = new Thread(new Runnable() {
            @Override
            public void run() {
                jsonReturn = Helpertool.GetValueFromWeb(parse_the_video_link_with_corresponding_video_id);

                Message msgObj = handler.obtainMessage();
                handler.sendMessage(msgObj);
            }
            @SuppressLint("HandlerLeak")
            private final Handler handler = new Handler() {
                public void handleMessage(Message msg) {
                    try {
                        JSONObject jObject = new JSONObject(jsonReturn);
                        id_of_video = jsonObject.getString("video_ID");
                        the_url_of_video_file = jsonObject.getString("video_file");

                        PlayVideo(the_url_of_video_file);
                    }   
                    catch (JSONException e1) {
                        e1.printStackTrace();
                    }
                }
            };
        });
        background.start();

        return view;
    }

    private void PlayVideo(String url) {
        Uri video = Uri.parse(url);
        myVideo.setVideoURI(video);
        myVideo.setOnPreparedListener(new OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                myVideo.start();
            }
        }
    }

    @Override
    public void onCompletion(MediaPlayer mediaPlayer) {
            Log.i("TAG", "END");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
    }   
    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        if (what == 100){
            myVideo.stopPlayback();
            PlayVideo(the_url_of_video_file);
        }
        return true;
    }
}

我看过这个,但我没有回答。 MediaPlayer making APP not responding

0 个答案:

没有答案