Android MediaPlayer:如何在完成活动之前停止线程

Android MediaPlayer:如何在完成活动之前停止线程,第1张

概述我在android中创建了一个mediplayer,它有一个可运行的后台线程,用于保持时间导引器的更新privateRunnablemUpdateTimeTask=newRunnable(){publicvoidrun(){longtotalDuration=mediaPlayer.getDuration();longcurrentDuration=mediaPlayer.

我在android中创建了一个mediplayer,它有一个可运行的后台线程,用于保持时间导引器的更新

private Runnable mUpdateTiMetask = new Runnable() {    public voID run() {        long totalDuration = mediaPlayer.getDuration();        long currentDuration = mediaPlayer.getCurrentposition();        // .... setting textvIEws of durations           // ... converting milli to mm:ss and setProgress(progress)        mHandler.postDelayed(this, 100);    }};

并且我在主活动中有一个选项菜单,点击该选项将退出活动

public boolean onoptionsItemSelected(MenuItem item) {        if (item.getItemID() == R.ID.exitplayer)            exitPlayer();        return super.onoptionsItemSelected(item);    }    private voID exitPlayer() {        mediaPlayer.stop();        mediaPlayer.release();        try {            mUpdateTiMetask.wait();        } catch (InterruptedException e) {            e.printstacktrace();        }    this.finish();    }

但它会抛出

java.lang.IllegalStateException at
androID.media.MediaPlayer.getDuration(Native Method)

我知道线程中存在问题,应该在退出活动之前停止该线程,但我不确切知道如何
任何人都可以帮助PLZ?

解决方法:

使用以下

mhandler.removeCallbacks(mUpdateTiMetask);

http://developer.android.com/reference/android/os/Handler.html

public final voID removeCallbacks (Runnable r)Added in API level 1Remove any pending posts of Runnable r that are in the message queue.
总结

以上是内存溢出为你收集整理的Android MediaPlayer:如何在完成活动之前停止线程全部内容,希望文章能够帮你解决Android MediaPlayer:如何在完成活动之前停止线程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1107050.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存