[問題] 程式流程的問題
是這樣的
我有到底層呼叫C來使用 也就是我有使用ffmpeg 目的是用來作影片的切割
ffmpeg是使用intentservice的方式 另外給了service process name
------------------------------------------------------------------------------
(原因在於ffmpeg在每次使用時都要對參數初始化 c目前還不會改 只好從process方面下手
每做完一次ffmpeg 就刪除process 再次使用時 就會重新初始化)
------------------------------------------------------------------------------
大致上理想的流程如下
在main thread 下建立一個thread >> thread的工作是執行ffmpeg >>
執行完ffmpeg後 刪除process(for service) >> 重複上述第二、三個步驟直到切割結束
我遇到的問題如下
Thread threadB = new Thread(new Runnable() {
public void run() {
System.out.println("ffmpeg 開始..");
test(); //負責執行ffmpeg
System.out.println("ffmpeg 即將結束.."); System.out.println("aaaaa"+a);
}
});
threadB.start();
如果我在thread外面加一層loop, 就會無法按照我前面的流程走.
他會直接在main thread下把loop內跑完, 才會開始逐一的執行ffmpeg.
這樣子ffmpeg的pid都會是一樣,這會導致在做第二塊時無法初始化.
-----------------------------------------------------------------------------
我有在service的程式碼後面有加上onDestroy() 讓他做刪除pid的動作
當用loop跑的時候 onDestroy()這塊沒有被執行 不知原因如何
-----------------------------------------------------------------------------
目前有試過join 讓main thread等待 跟AsyncTask 讓ffmpeg在doInBackground執行
但這些都會遇到前面同樣的問題
我想問的是 有什麼方法 可以不斷地重複地執行相同的service?
※在執行ffmpeg時 切割需要數秒的時間 所以必須等待做完後 才能呼叫下一個service
--
作者 strike519 (噓我者 宅友也) 看板 Gossiping
標題 Re: [問卦] 有沒有濕耳屎的八卦?
我就是溼的耳朵兒 醫生說不用清 耳朵有自我機制會清除髒污 結果去游泳就塞住了
再去給醫生挖 就變成順風耳 可以遠遠聽到正妹的心跳聲 超爽~
→
06/19 14:50,
06/19 14:50
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.138.238.89
自己又解決了...沒想到是用簡單的BROADCAST就行了...冏rz
我是設計成 當ffmpeg執行完 就send一個廣播出去(寫在ondesdroy)
負責接收廣播的activity就會去重複的呼叫ffmpeg 形成一個loop 如下
activity(接收廣播)<------------->ffmpeg(做完送廣播)
loooooooooop
而且activity會記錄該執行幾次ffmpeg 超過之後就不會再去呼叫ffmpeg
※ 編輯: aiweisen 來自: 140.138.150.27 (07/29 16:10)