今天小編給大家分享一下Android中如何利用多線程重復(fù)啟動(dòng)與停止服務(wù)的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

Android 多線程實(shí)現(xiàn)重復(fù)啟動(dòng)與停止的服務(wù)
多線程環(huán)境下為了避免死鎖,一般提倡開放調(diào)用,開放調(diào)用可以避免死鎖,它的代價(jià)是失去原子性。但是在有些時(shí)候會(huì)顯得邏輯錯(cuò)誤,
例如:
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();
}
}
}在單線程環(huán)境下這個(gè)代碼沒有任何問題。可是在多線程環(huán)境就會(huì)出現(xiàn)奇怪的現(xiàn)象。
原則上講, onStart 一定要走在onStop前面,可事實(shí)并非如此:
執(zhí)行步驟如下:
線程1 start
線程2 stop
線程1
if(!mIsStarted){
mIsStarted = true;
changed = false;
}線程2
synchronized(this){
if(mStarted){
mStarted = false;
changed = true;
}
}以上就是“Android中如何利用多線程重復(fù)啟動(dòng)與停止服務(wù)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享文章:Android中如何利用多線程重復(fù)啟動(dòng)與停止服務(wù)-創(chuàng)新互聯(lián)
URL標(biāo)題:http://www.chinadenli.net/article38/ccsopp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、自適應(yīng)網(wǎng)站、品牌網(wǎng)站制作、服務(wù)器托管、做網(wǎng)站、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容