Android 四大元件 3Service

2021-07-16 05:49:08 字數 4119 閱讀 6081

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...