我有一個圖像應用程序,我在顯示圖像時播放音樂。 現在,我在UI線程中都具有這些功能。在非UI線程中運行代碼android
我想將音樂播放部分移到另一個與UI線程不同的線程。
我該如何做到這一點?
,如果我使用的處理程序和可運行的複雜性:
運行()必須具有的一切,是因爲它是基於事件上執行 但音樂代碼是散佈在整個的地方,有一個不同一段代碼來執行每一次
,所以我可以與處理器和可運行實現這一目標的唯一途徑是,如果我每做一個特定的功能 這意味着所有的音樂代碼將無法在同一個線程中運行多個可運行,他們會運行在不同的線程 這不是一件好事。
那麼你如何做到這一點?
那麼你成功了嗎?或者你需要一些其他方法,而不是我的答案? – alex
是的,我成功地做到了。這就是我所做的。 public static void startTrack(){ \t \t PLAYER_STATE = IS_PLAYING; \t \t //mPlayer.start(); \t \t \t \t/*設定的處理程序,並運行的*/ \t mMusicHandler =新的處理程序(){\t \t \t }; \t \t \t \t mMusicRunnable =新的Runnable(){ \t \t \t公共無效的run(){ \t \t \t \t Log.d(TAG, 「音樂內可運行」); \t \t \t \t嘗試{ \t \t \t \t \t mPlayer.start(); \t \t \t \t \t \t}趕上(IllegalStateException異常E){ \t \t \t \t \t日誌。d(TAG,「ILLEGAL STATE-START」); \t \t \t \t \t handleIllegalState(); \t \t \t \t} \t \t \t} \t \t}; \t \t mMusicHandler.post(mMusicRunnable); \t \t \t} – Namratha