android - 安卓线程问题,也是java的....

查看:115
本文介绍了android - 安卓线程问题,也是java的....的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

学java不是很久,还没完全掌握一些东西的精髓,所以问一下:如代码,我每播放一首歌,这个线程都会新开一个来反馈播放进度,假设,我不停切歌,那产生的线程会自动被杀吗?

还是说有什么办法也随着换歌的时候,中断线程呢?

一般怎么处理这种产生很多线程的情况?

new Thread() {

                        @Override
                        public void run() {

                            while (true) {

                                try {
                                    sleep(millis);
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }
                                if (player != null && player.isPlaying()) {

                                    mListener.onPlaying(player.getCurrentPosition(), player.getDuration());
                                }

                            }

                        }

                    }.start();

======================================

经过最佳答案的提醒:用一个外在的线程监听player的播放进度就可以了,也不用wait(),notify()线程.....也就是把上面的代码线程提出来在外面写,反正player是全局的。

解决方案

重复的启动销毁线程将会消耗很多资源,并不是合理的设计方式,
目标是为了监听反馈的播放进度,为什么一定需要每次都新开一个线程呢?
下面这种方式更为合理一些

  1. 新开一个线程,专门负责监听,正常状况下是wait住,如果有消息需要监听就监听。这里需要继承Thread重写run方法

  2. 每次新开一个歌曲时候,notify监听线程,并将新的player传递过去,即可重新监听

这篇关于android - 安卓线程问题,也是java的....的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆