資源描述:
《service組件詳解告別unabletostartserviceintent》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、Service組件詳解,告別UnabletostartserviceIntent!很多人在使用service的過程中由于一些細(xì)節(jié)的問題導(dǎo)致UnabletostartserviceIntent,在此,我搜集了一下service的一些資料,和大將共享...下次大家再遇到這樣的錯誤,相信就能迎刃而解了.!let'sgo!1.Service是什么Service是Android的四大組件之一,即Android系統(tǒng)的服務(wù)(不是一個線程,是主程序的一部分),與Activity不同,它是不能與用戶交互的,不能自己啟動的,需要調(diào)用Context.startService()來啟動,運(yùn)行后臺,如
2、果我們退出應(yīng)用時,Service進(jìn)程并沒有結(jié)束,它仍然在后臺行。比如我們播放音樂的時候,有可能想邊聽音樂邊干些其他事情,當(dāng)我們退出播放音樂的應(yīng)用,如果不用Service,我們就聽不到歌了,所以這時候就得用到Service了。2.Service生命周期①onCreate()創(chuàng)建Service②onStart(Intentintent,intstartId)啟動Service③onDestroy()銷毀Service④onBind()返回一個IBinder接口對象給Service3.啟動和停止Service①啟動:startService(Intentintent)來啟動Serv
3、ice,這時Service會調(diào)用自身的onCreate()方法(該Service未創(chuàng)建),接著調(diào)用onStart()方法。②停止:stopService(Intentintent)來停止Service,這時Service會調(diào)用自身的onDestory()方法。4.綁定Service調(diào)用bindService(Intentservice,ServiceConnectionconn,intflags)來綁定一個Service,這時Service會調(diào)用自身的onCreate()方法(該Service未創(chuàng)建),接著調(diào)用onBind()方法返回客戶端一個IBinder接口對象。(注意:
4、如果返回null,ServiceConnection對象的方法將不會被調(diào)用)參數(shù)①service:Intent對象。參數(shù)②conn:ServiceConnection對象,實現(xiàn)其onServiceConnected()和onServiceDisconnected()在連接成功和斷開連接時處理。參數(shù)③flags:Service創(chuàng)建的方式,一般用Service.BIND_AUTO_CREATE表示綁定時自動創(chuàng)建。示例代碼:MainActivity用來操作Service1.publicclassMainActivityextendsActivity{2.privateButtons
5、tartBtn;3.privateButtonstopBtn;4.privateButtonbindBtn;5.privateButtonunBindBtn;6.privatestaticfinalStringTAG="MainActivity";7.privateLocalServicemyService;8.@Override9.publicvoidonCreate(BundlesavedInstanceState){10.??super.onCreate(savedInstanceState);11.??setContentView(R.layout.main);12.
6、??startBtn=(Button)findViewById(R.id.start);13.??stopBtn=(Button)findViewById(R.id.stop);14.??bindBtn=(Button)findViewById(R.id.bind);15.??unBindBtn=(Button)findViewById(R.id.unbind);16.??startBtn.setOnClickListener(newMyOnClickListener());17.??stopBtn.setOnClickListener(newMyOnClickListene
7、r());18.??bindBtn.setOnClickListener(newMyOnClickListener());19.??unBindBtn.setOnClickListener(newMyOnClickListener());20.}21.classMyOnClickListenerimplementsOnClickListener{22.??@Override23.??publicvoidonClick(Viewv){24.??Intentintent=newIntent();25.??i