什麼叫service
android中的service跟windows中的服務很類似,是一種沒有使用者操作介面,在特定的內執行,而且不容易被使用者察覺的程式。
在android中服務可分為兩種:
1.本地服務
localservice
執行在本應用程式內部的,可以自行通過呼叫service.stopself()或者service.stopselfresult來自動停止。
2.遠端服務
remoteservice
可執行在android系統中的應用程式之間,可以定義介面並將介面暴露出來給其他應用程式呼叫,通過呼叫bindservice進行服務物件的連線
所有的服務必須在配置檔案androidmanifest.xml中定義,通過context.startservice或者context.bindservice來啟動服務
service的生命週期
通過兩種方式啟動的service的生命週期也會不同
context.startservice() ->oncreate()- >onstart()->service running
--呼叫context.stopservice() ->ondestroy()
context.bindservice()->oncreate()->onbind()
->service running
--呼叫》onunbind() ->
上圖更能詳細說明service生命週期
activity
與服務進行通訊,開發人員通常把通訊方法定義在介面裡,然後讓
ibinder
物件實現該介面,而
activity
通過該介面引用服務
onbind
()方法
返回的ibinder
物件,然後呼叫
ibinder
物件裡自定義的通訊方法。
下面乙個簡單的具體例項來說明以上解決方案
<?xml version="1.0" encoding="utf-8"?>
strings.xml
<?xml version="1.0" encoding="utf-8"?>
hello world, mainactivity!
identification
query
package com.eric.test
/** * 查詢介面,服務端和客戶端對話的公共標準,方便客戶端對服務端方法的使用
* */
public inte***ce queryservice
package com.eric.test;
import android.content.intent;
import android.os.binder;
import android.os.ibinder;
public class plateformservice extends service ;
/*** 根據id號,查詢資訊
* @param no
* @return
*/private string query(int id)
return null;
} @override
public ibinder onbind(intent intent)
//返回給客戶端的實現
private final class studentbinder extends binder implements queryservice
}}
package com.eric.test;
import android.content.componentname;
import android.content.intent;
import android.content.serviceconnection;
import android.os.bundle;
import android.os.ibinder;
import android.view.view;
import android.widget.edittext;
import android.widget.textview;
public class mainactivity extends activity
private final class platformconnection implements serviceconnection
@override
public void onservicedisconnected(componentname name)
}/**
* 查詢方法
* @param v 引數必須是view型別
*/public void query(view v)
}
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...