您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Android 中怎么利用多線程重復啟動與停止服務,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
Android 多線程實現重復啟動與停止的服務
多線程環境下為了避免死鎖,一般提倡開放調用,開放調用可以避免死鎖,它的代價是失去原子性。但是在有些時候會顯得邏輯錯誤,
例如:
class A{ private boolean mIsStarted; void start(){ boolean changed = false; synchronized(this){ if(!mIsStarted){ mIsStarted = true; changed = false; } if(changed){ callBack.onStart(); } } } boolean isStarted(){ sychronized(this){ return mIstarted; } } void stop(){ boolean changed = false; synchronized(this){ if(mStarted){ mStarted = false; changed = true; } } if(changed){ callBack.onStop(); } } }
在單線程環境下這個代碼沒有任何問題。可是在多線程環境就會出現奇怪的現象。
原則上講, onStart 一定要走在onStop前面,可事實并非如此:
執行步驟如下:
線程1 start
線程2 stop
線程1
if(!mIsStarted){ mIsStarted = true; changed = false; }
線程2
synchronized(this){ if(mStarted){ mStarted = false; changed = true; } }
關于Android 中怎么利用多線程重復啟動與停止服務就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。