編輯:關於Android編程
一個常見的應用場景:
loginactivity登陸頁面 點擊login, 發送給後台的服務類CmdSocketService 去處理登陸業務,
並獲取登陸狀態(成功失敗的反饋)
loginActivity使用封裝好的CmdSocketService(service)類的方法:
a) loginActivity類中定義:
CmdSocketService serviceBinder;
// 下面定義用來連接到服務CmdSocketService後的處理函數
private ServiceConnection mConn = newServiceConnection()
{
public void onServiceConnected(ComponentName className, IBinder service)
{
// 這裡service其實是MyBinder類對象,,其中有個getService()方法,用於返回service對象自己。
// LoginActivity獲得了service對象(serviceBinder)的引用,那使用service中方法和普通的類方法一樣使用。
serviceBinder=((CmdSocketService.MyBinder)service).getService();
Log.v(TAG,"get CmdSocketService 引用 ok !");
mBound = true;//自己定義的服務是否綁定標記
}
public void onServiceDisconnected(ComponentName className) {
serviceBinder = null;
mBound = false;
}
};
b) onStart()中定義:
Intent intent = new Intent(this,CmdSocketService.class)
bindService(intent, mConn, Context.BIND_AUTO_CREATE);
//===========================================================
service類中的定義:
public class CmdSocketService extends Service{
//1 .
public class MyBinder extends Binder
{
public CmdSocketService getService()
{
Log.v(TAG,"getService()");
return CmdSocketService.this; //返回service對象本身
}
}
// 2.
private MyBinder mBinder = new MyBinder();
//3.反饋給onServiceConnection()
onBind()中實現:
{
return mBinder;
}
activity和services綁定流程:(bindService方式)
1. new intent指定和哪個service綁定
2. 開始綁定,傳遞服務連接處理函數ServiceConnection()(有點像回調函數),//調用此函數時android會調用service類中的onBind()函數。
3.onBind()函數裡面返回了一個Binder子類對象。Binder子類中有個getServices()方法,返回service對象本身。,最終就是為了給loginActiviy返回service對象的引用。
4.logingActivity和service綁定成功後。android會調用onServiceConnected()函數。此函數中IBinder就是service返回的Binder的子類對象MyBinder.
5.調用MyBinder中的方法getService()即可獲得service對象的引用。
6.開始調用service中的公共方法吧。
廢話不多說,先看下效果:先是微信的再是模仿的先說下實現原理,再一步步分析這裡總共有2個Activity一個就是主頁,一個就是顯示我們圖片效果的頁面,參數通過Intent傳
前言作為一個開發者,日常會接觸到很多優秀的軟件,其實,或多或少會有這樣的想法,我能不能開發一個自己軟件,甚至辦公軟件都希望是Markdown的文本,為何用office?我
1 秒殺業務分析正常電子商務流程(1)查詢商品;(2)創建訂單;(3)扣減庫存;(4)更新訂單;(5)付款;(6)賣家發貨秒殺業務的特性(1)低廉價格;(2)大幅推廣;(
1.構建一張七彩圖:我們經常看到這種樣子的顏色選擇器吧..然後其實右邊的亮度選擇是:這樣我們的代碼就可以進行啦... // 創建七彩圖片 private voi