Android四大大組件
成都創(chuàng)新互聯(lián)公司成都網(wǎng)站建設(shè)按需開發(fā)網(wǎng)站,是成都網(wǎng)站營銷推廣公司,為銅雕雕塑提供網(wǎng)站建設(shè)服務(wù),有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計服務(wù):原型圖制作、網(wǎng)站創(chuàng)意設(shè)計、前端HTML5制作、后臺程序開發(fā)等。成都網(wǎng)站設(shè)計熱線:028-86922220
Activity:帶界面的。
BroadcastReceiver:廣播接收者,不帶界面,當(dāng)對應(yīng)的廣播事件發(fā)出來的時候,它就可以收到。
ContentProvider:內(nèi)容提供者,主要用于暴露數(shù)據(jù)給其他的應(yīng)用程序去使用。
Service:服務(wù)可以在后臺運(yùn)行的,不帶界面的。
1.Service服務(wù)
1.1.服務(wù)的寫法:
第一步:寫個類去繼承服務(wù)Service
第二步:重寫服務(wù)的oncreate,ondestroy方法,OnCreate:服務(wù)對象創(chuàng)建的時候會執(zhí)行Ondestroy: 服務(wù)對象銷毀的時候會執(zhí)行。
第三步: 服務(wù)需要到清單文件中注冊.
2.為什么需要服務(wù):需要去翻看文檔,Java的doc的文檔,一般都是程序自動生成的,在看的時候,一般都去到文檔的目錄下找一個叫做index.html的文檔。這個是一個常識。
Android系統(tǒng)會讓一個應(yīng)用程序的進(jìn)程活的盡可能的長,但是也會去回收老的進(jìn)程以便于新的或者更加重要的進(jìn)程可以順暢的跑起來。
為了能夠決定哪些進(jìn)程先被殺死,哪些后被殺死,android系統(tǒng)中將進(jìn)程按照優(yōu)先級做了劃分,優(yōu)先級最低最先被干掉.然后以此類推,從而去回收系統(tǒng)的資源。
進(jìn)程按照優(yōu)先級分為5種:
第一種:前臺進(jìn)程,一個應(yīng)用程序有組件正在運(yùn)行著,獲得了焦點,可以響應(yīng)用戶的點擊觸摸事件。
第二種:可視進(jìn)程,一個應(yīng)用程序有組件正在運(yùn)行著,但是失去了焦點,只是還看得見。
第三種:服務(wù)進(jìn)程,如果一個應(yīng)用程序中一個service在后臺長期運(yùn)行著,那么就可以稱之為服務(wù)進(jìn)程。
第四種:后臺進(jìn)程,一個應(yīng)用程序中沒有service在后臺運(yùn)行,只有activity其他的組件在切換到了后臺,那么就是屬于后臺進(jìn)程。
第五種:空進(jìn)程,一個應(yīng)用程序中沒有任何組件在運(yùn)行著,那么就是屬于空進(jìn)程。
3.開啟服務(wù)的生命周期:服務(wù)創(chuàng)建的時候會調(diào)用oncreate的方法 然后服務(wù)就一直在后臺運(yùn)行著,開啟服務(wù)的時候會調(diào)用startService,那么服務(wù)的onstartCommand會執(zhí)行,多次開啟服務(wù),并不會多次創(chuàng)建服務(wù),服務(wù)只能被創(chuàng)建一次, 多次開啟只會重復(fù)調(diào)用onstartCommand,服務(wù)銷毀的之后會調(diào)用ondestroy方法。
開啟服務(wù),服務(wù)后會一直在后臺運(yùn)行著,與開啟服務(wù)的組件activity沒有關(guān)系了。
4.本地服務(wù)中的方法調(diào)用:本地服務(wù)的調(diào)用一般用的不多,大家可以將遠(yuǎn)程服務(wù)調(diào)用的代碼好好寫寫。
5.遠(yuǎn)程服務(wù)調(diào)用:
5.1.第一部分--支付寶:編寫支付寶的應(yīng)用程序.需要有個服務(wù).服務(wù)與早上寫的類似.A)publicclassAlipayServiceextendsServiceB)自動的會覆蓋onBind的方法C)編寫一個私有的內(nèi)部類,去繼承一個由aidl文件生成的接口的Stub內(nèi)部類。打開生成的.java類,發(fā)現(xiàn)里面有一個內(nèi)部類Stub,繼承了Binder,實現(xiàn)了IAlilpayNeixian的接口。AIDL)讓編寫的私有的內(nèi)部類(內(nèi)線)去繼承Stub類//內(nèi)線類去調(diào)用 pay的方法,從而完成支付
private class AlipayNeixianextends IAlipayNeixian.Stub{
@Override
public boolean callPay(Stringaccount, double money) { returnpay(account,money); } } )
在onBind方法中return內(nèi)線的實例對象
@Override
publicIBinder onBind(Intent intent){
System.out.println("onBind服務(wù)被綁定了...");
returnnewAlipayNeixian();
}
編寫服務(wù)中最終要被調(diào)用到的方法pay方法
publicbooleanpay(Stringaccount,doublemoney){
System.out.println( account +"帳號,支付了 "+money);
returntrue; }
到清單文件中,配置AlipayService,由于一會需要讓美團(tuán)可以去激活這個服務(wù),所以需要配置隱式意圖。