正如問題所述,這裏是代碼。Android線程在進程中間隨機停止
我想要做的事情基本上是我有一個數組列表,說「myArray」。該數組包含以毫秒爲單位的存儲時間點。接下來的事情是我想調用基於這些時間點的方法。因此,我需要在播放音樂時從0開始計時,並逐個比較時間計數器與數組中的時間點(從第一個數組索引到結束)。
第一種方法「timeCounter」是一種通過MediaPlayer播放音樂時啓動時間計數器的方法。
public void timeCounter(){
Runnable myRunnable = new Runnable(){
@Override
public void run(){
while(musicPlaying){
startCounter(arrayPos);
}
}
};
Thread musicPlayer = new Thread(myRunnable);
musicPlayer.start();
}
這是數組中時間計數器和時間比較發生的地方。
public void startCounter(List<Long> array){
elapsedTime = System.currentTimeMillis() - timeStart;
if(elapsedTime == array.get(arrayPos)){
arrayPos += 1; //Continue comparing with the next number in the array
Log.v("DEBUG", "TIME MATCHES!");
if(arrayPos>= array.size()){
arrayPos= 0; //Prevent out of array index
}
}
}
我的代碼正常運行,LogCat的結果是正確的。
現在的問題是,線程直到音樂播放完畢纔會運行(當音樂播放完成後,我設置了onCompletionListener並將「musicPlaying」設置爲false)。停車點完全是隨機的,有時候剛開始的時候,或者是50%左右,或者即將完成。有時它甚至沒有開始! 我一直在努力弄清楚爲什麼,但我找不到任何關於線程中途停止或任何地方的任何信息。提前致謝! =)
當線程完成「musicPlaying」變量的狀態時,您可能會記錄一條消息。我敢打賭,@Tudor已經出現,並且'musicPlaying'正在線程之間隨機更新。 – Gray
等待,如果即使退出應用程序時,我放入線程中的日誌消息仍然顯示消息,這意味着'musicPlaying'在整個過程中仍然是正確的,對嗎? –
@Gray我應該在哪裏登錄郵件?將日誌放入循環器中充斥我的logcat,並且線程繼續運行,即使退出應用程序時也顯示「true」,即使當我退出應用程序時 –