編輯:關於Android編程
本文實例講述了Android Service控件用法。分享給大家供大家參考,具體如下:
1、Service是一個應用程序的組件
2、Service沒有圖形化界面
3、用來處理耗時比較長的功能(下載、播放MP3)
4、更新ContentProvider、Intent以及系統的啟動
Servcie不是一個單獨的進程,不是一個線程
定義一個Service比較簡單,只要繼承Service類,實現其生命周期的方法即可。一個定義好的Service必須在AndroidManifest.xml文件中通過<service>聲明才能使用
<service android:name="MyService">
<intent-filter>
<action android:name="hb.com.MYSERVICE"/>
</intent-filter>
</service>
備注:MyService一定要是繼承了Service類的,並且名稱和類名是一致的
action的名稱是自定義的,只要在bindService或者操作Intent的時候就能夠被捕獲
public class MyService extends Service {
public class MyBinder extends Binder{
public MyService getMyService(){
return MyService.this;
}
}
public void test(){
System.out.println("test");
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
System.out.println("onBind");
return new MyBinder();
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
System.out.println("onCreate");
super.onCreate();
}
@Override
public boolean onUnbind(Intent intent) {
System.out.println("I am unbind");
return super.onUnbind(intent);
}
}
public class MainActivity extends Activity {
private static final String MYSERVICE = "hb.com.MYSERVICE";
private boolean flag = false;
//bindService()方法需要ServiceConnection接口作為參數,所以定義了這個變量,目的是為了實現裡面的兩個方法
ServiceConnection conn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
System.out.println("onServiceDisconnected");
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
System.out.println("onServiceConnected");
MyBinder myBinder = (MyBinder)service;
MyService myService = myBinder.getMyService();
myService.test();
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.start).setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(MYSERVICE);
//先調用MyService的onCreate()方法,然後調用onBind()方法,最後調用onServiceConnected()方法
//因此IBinder返回的值就是通過onBind()方法返回的對象,定義getMyService()方法是為了得到MyService對象,用戶在這個類中添加自己需要的一些方法,這樣可以做一些邏輯處理
bindService(intent, conn, Service.BIND_AUTO_CREATE);
flag = true;
}
});
findViewById(R.id.stop).setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
if(flag){
//取消綁定事件,會調用MyService的onUnbind()方法,但是不會調用onServiceDisconnected()這個方法,原因不明
unbindService(conn);
flag = false;
}
}
});
}
}
更多關於Android相關內容感興趣的讀者可查看本站專題:《Android文件操作技巧匯總》、《Android編程開發之SD卡操作方法匯總》、《Android開發入門與進階教程》、《Android資源操作技巧匯總》、《Android視圖View技巧總結》及《Android控件用法總結》
希望本文所述對大家Android程序設計有所幫助。
android 開發:繪制復雜曲線,帶漸變圖表
繪制曲線類:public class BaseFundChartView extends View { Paint linePaint; Paint text
android Git命令家底兒及Git數據通信原理詳解
現在大部分使用的都是SVN,也有一部分遷移了Git,雖然挺好的,不過還有其它很多版本控制的工具,並沒有誰最好用,最重要的是適合自己的公司與團隊,效率和團隊是成正比了,重要
簡單實現Android搜索功能 顯示清除歷史搜索記錄
本文主要為大家分享了Android實現搜索功能,並且可以實時顯示搜索的歷史記錄,根據輸入的內容去模糊查詢,供大家參考,界面圖如下。 本案例實現起來也非常的簡單,
Android 代碼實現preference組件
Preference主要實現一些配置數據,一些我們上次點擊選擇的內容,我們希望在下次應用調起的時候依然有效,無須用戶再一次進行配置或選擇。Android提供