本地服務(local Service)的實現

2021-07-09 05:33:58 字數 3564 閱讀 2583

定義;

型別:1、本地服務(local service)

------應用程式內部

啟動方式:

-------startservice ----stopservice()----stopservice()-----stopself()------stopselfresult()

-------bindservice ----先要unbindservice然後停掉(啟動源銷毀時一定要先解繫結)

2、遠端服務(remote service)

------android系統內部的應用程式之間

------定義ibinder介面

生命週期:

-------startservice:---->startservice()--->oncreate()--->onstartcommmand()--->servicerunning(呼叫停止方法)--->ondestroy()--->service down

-------bindservice: ---->bindservice()--->oncreate()--->onbind()--->service繫結了(呼叫解繫結)--->onunbind()--->ondestroy()--->service down

注:開啟service沒有關閉以前oncreate()只呼叫一次,第二次直接開啟onstartcommmand()方法

start方式特點:

---服務跟啟動源沒有任何聯絡

---無法得到服務物件

bind方式特點:

---通過ibinder介面例項,返回乙個serviceconnection物件給啟動源

---通過serviceconnection物件的相關方法可以得到service物件

本地服務start啟動:直接用intent(context,class)——>startservice(mintent)

補充:intent是四大元件關聯的紐帶

本地服務bind啟動:

intent2 = new intent(mainactivity.this, mybindservice.class);

bindservice(intent2, conn, service.bind_auto_create);

----參1、intent物件

----參2、serviceconnection

----參3、讓服務建立用的 用引數:service.bind_auto_create讓服務正常建立

得到service的回傳資料:

1、binder介面:

---重寫乙個類繼承binder類

---寫乙個返回當前的服務物件的方法;

2、實現繫結:

----實現乙個serviceconnection類

----重寫了兩個方法用來:鏈結、殺死服務

補充:有乙個intentservice類,

1、它裡面包含了執行緒可以處理耗時操作

2、不能併發執行,乙個執行完了才能執行寧乙個;

!!!!!!!!!!!注意啊!!!!!!要在清單檔案中註冊(我經常忘記!!!!!!)

我們先來看清單檔案資訊:

再看activity的實現:

package zxx.serivce;

import android.content.componentname;

import android.content.intent;

import android.content.serviceconnection;

import android.os.bundle;

import android.os.ibinder;

import android.util.log;

import android.view.menu;

import android.view.menuitem;

import android.view.view;

import android.widget.toast;

import zxx.serivce.bindservice.mybinderservice;

public class mainactivity extends activity

/*** service和啟動源接源連線時呼叫。

*/@override

public void onserviceconnected(componentname name, ibinder ibinder)

};} public void doclick(view v)

} @override

protected void ondestroy()

@override

public boolean oncreateoptionsmenu(menu menu)

@override

public boolean onoptionsitemselected(menuitem item)

return super.onoptionsitemselected(item);

}}

service中的實現:

package zxx.serivce;

import android.content.intent;

import android.os.binder;

import android.os.ibinder;

import android.util.log;

public class bindservice extends service

} @override

public void oncreate()

@override

public ibinder onbind(intent intent)

@override

public void ondestroy()

public void paly()

}

startservice啟動模式的實現:

package zxx.serivce;

import android.content.intent;

import android.os.ibinder;

import android.util.log;

public class startservice extends service

@override

public void ondestroy()

@override

public int onstartcommand(intent intent, int flags, int startid)

@override

public void onstart(intent intent, int startid)

@override

public ibinder onbind(intent intent)

}

布局檔案:

mysql怎麼改本地服務 怎麼設定本地伺服器路徑

回答數 104 被採納數 19 2017 01 13 18 12 16 俺又自己解決了 s 476 s 495 資料庫型別 dbtype mysql 資料庫使用者名稱 dbuser root 資料庫密碼 dbpass 17911 伺服器名,本地 dbserver localhost 資料庫名 dbn...

搭建本地 mock 服務

工作中,有時候前端的很多任務作需要後端的支援,但是可能後端的介面還沒有開發完,或者有些時候在聯調階段,修復某個 bug 的時候,環境掛了。那麼這個時候,我們的很多任務作無法順利的進行下去。於是萌生了搭建本地伺服器的想法。首先粗略的說一下它的好處jsonserver gulp 實現 缺點 大部分需求都...

怎麼啟動本地服務

public為靜態資源路徑,預設讀取子檔案index.html use express.static public listen 8083,step1 全域性安裝 http server step2 進入目標資料夾啟動 http server 或者指定埠號 http server p 3000 st...