1、服務
執行於後台的乙個元件,用來執行適合執行在後台的**,服務是沒有前台介面,可以 視為沒有介面的activity
service
程序的生命週期(程序的優先順序)
1、前台程序 擁有乙個正在與使用者互動的activity(onresume方法被呼叫)的程序
2、可見程序 擁有乙個可見但是沒有焦點的activity(onpause方法被呼叫)
3、服務程序 擁有乙個通過startservice方法啟動的服務
4、後台程序 擁有乙個不可見的activity(onstop方法被呼叫)的程序
5、空程序 沒有擁有任何活動的應用元件的程序 很容易被系統殺死
服務開啟和關閉:
建立乙個服務首先extends service 方法。
配置清單檔案;
顯式啟動:
android:name="com.zh.startservice.myservice">
service>
開啟服務:
intent intent = new intent(this,myservice.class);//定義意圖物件,通過上下文物件,和指定service的class類。
startservice(intent);
關閉服務;
intent intent = new intent(this, myservice.class);
stopservice(intent);
service服務的生命週期方法:
oncreate;
onstartcommand;
ondestory();
開啟服務時呼叫:
oncreate;
onstartcommand;
關閉服務時呼叫:
ondestory的方法。
啟動service startservice();
第二種方法: bindservice(service, conn, flags); 繫結服務
bindservice(intent,conn , bind_auto_create);
在服務中呼叫其方法,直接呼叫是行不通的,需要定義乙個中間類,在類中定義方法呼叫方法中的方法。
優化:可以將中間類的方法抽出來變成乙個介面。然後讓中間類實現該介面。inte***ce;
demo:
public
inte***ce
publicbusniess
package com.zh.banzheng;
import android.content.intent;
import android.os.binder;
import android.os.ibinder;
public
class
leaderservice
extends
service
class zhoumi extends binder implements publicbusniess
public
void
damajiang()
}public
void
panzheng()
}package com.zh.banzheng;
import com.zh.banzheng.leaderservice.zhoumi;
import android.content.componentname;
import android.content.intent;
import android.content.serviceconnection;
import android.os.bundle;
import android.os.ibinder;
import android.view.menu;
import android.view.menuitem;
import android.view.view;
public
class
mainactivity
extends
activity
public
void
click(view v)
class myserviceconn implements serviceconnection
@override
public
void
onservicedisconnected(componentname name)
}}
intent intent = new intent(this, musicservice.class);
conn = new myserviceconn();
startservice(intent);
bindservice(intent, conn , bind_auto_create);
在**中註冊廣播接收者,
使用**配置廣播接收者
* 可以使用清單檔案註冊 :場景應用 電量的監測,螢幕的鎖屏 經常反覆用的一些東西。
* 廣播一旦發出,系統就會去所有清單檔案中尋找,哪個廣播接收者的action和廣播的action是匹配的,如果找到了,就把該廣播接收者的程序啟動起來
* 可以使用**註冊
* 需要使用廣播接收者時,執行註冊的**,不需要時,執行解除註冊的** **註冊就不要在清單檔案中進行配置了。
建立service:
package com.zh.register;
import android.content.intent;
import android.content.intentfilter;
import android.os.ibinder;
public
class
registerservice
extends
service
@override
public
void
oncreate()
@override
public
void
ondestroy()
}
建立廣播接收者:
package com.zh.register;
import android.content.broadcastreceiver;
import android.content.context;
import android.content.intent;
public
class
screenreceiver
extends
broadcastreceiver else
if(intent.action_screen_off.equals(action))
}}
在mainactivitity中啟動和停止service:
package com.zh.register;
import android.content.intent;
import android.os.bundle;
import android.view.menu;
import android.view.menuitem;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.button;
public
class
mainactivity
extends
activity
implements
onclicklistener
@override
public
void
onclick(view v) else
if(id==r.id.bt_two)
}}
android 四大元件
1.activity 2.service 3.contentprovider 應用中的資料,對外進行共享,其它應用可以通過內容提供者,可以訪問到你應用中的資料,對資料進行增刪改查 1 對不同的資料格式,統一了檔案格式和資料訪問api 2 內容提供者要繼承contentprovider類 3 在清單檔...
Android 四大元件
activity intent receiver service content provider 並不是每乙個android應用程式都需要這四種構造塊,這不是必須的。當我們明確了我們的應用需要哪些構造塊後,我們就需要在androidmanifest.xml中登記這些構造塊的清單。這個配置檔案用於定...
android四大元件
android 四大元件 1.contentprovider contentprovider是什麼 android中的乙個應用元件 作為乙個引用元件的表現是生命週期方法 android中內容提供者 一般是內部儲存中的資料 contentprovider 物件的應用場合 例如 3.contentpri...