java - 安卓把new thread写在onCreate()里面不会运行?
ringa_lee
ringa_lee 2017-04-17 17:11:52
0
4
871

今天写了一个线程在onCreate里面,结果它不运行。我犯错了??

这个子线程在哪里开start(),有关系吗?我以为无论在哪里开了,它就是特立独行的了??

新手,理解不是很全....

你觉得呢?

public void onCreate() {
        super.onCreate();
        player = new MediaPlayer();
        player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mediaPlayer) {

                mListener.onNextPlay(true);

            }
        });

        new Thread() {


            @Override
            public void run() {

                final int millis = 100;

                try {
                    sleep(millis);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                if (player.isPlaying() && player != null) {
                    mListener.onPlaying(player.getCurrentPosition(), player.getDuration());

                    Log.i("ddd", Integer.toString(player.getCurrentPosition()));

                }

            }
        }.start();

    }

Log.i("ddd", Integer.toString(player.getCurrentPosition()));

这句没有信息弹出,如果歌曲播放了,它会不断输出播放进度的数字才是....

====================================
经过添加log,得知这个线程是一开始就运行的,但是sleep一次后,就好像没有醒过来一样....没信息输出

====================================
解决疑惑:能运行,就是要加一个while循环......

ringa_lee
ringa_lee

ringa_lee

모든 응답(4)
阿神

onCreate는 액티비티가 생성될 때 한 번만 실행되며, 이 스레드는 실행의 마지막 줄을 실행할 때 종료됩니다.
저도 초보인데 틀린 부분 있으면 정정해주세요.

大家讲道理

반드시 구현될 예정입니다. 하지만 동일한 객체를 서로 다른 스레드에서 호출하는 경우에는 경쟁 관계가 있는지 주의 깊게 확인해야 합니다. 동기화 보호가 필요한지 여부입니다.

大家讲道理

실행 함수 시작 부분에 기록하여 실행 중인지 확인합니다.

巴扎黑

아, while 루프를 작성해야 하는데...

으아아아
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿