編輯:Android開發實例
使用bindService方法將如何寫呢? 具體的步驟如下:
1. 使用bindService方法啟動服務,bindService (Intent service, ServiceConnection conn, int flags) 有三個參數,這裡大家可能會對第二個ServiceConnection和最後第三個參數的標識感到陌生,一般在我們調用bindService時需要一個ServiceConnection獲取服務實例以及狀態,代碼如下
Java代碼:
private ServiceConnection sc = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
Toast.makeText(ctx, "android123 service connected", Toast.LENGTH_LONG).show();
}
@Override
public void onServiceDisconnected(ComponentName name) {
Toast.makeText(ctx, "android123 service disconnected", Toast.LENGTH_LONG).show();
}
};
這樣,我們在服務的連接和斷開時都會收到一個Toast的消息提示,而bindService最後的參數一般使用BIND_AUTO_CREATE 標識自動創建。所以一般我們綁定一個服務,使用下面的代碼
bindService(intent, sc, Service.BIND_AUTO_CREATE);
來啟動服務,而解除綁定可以用 unbindService(sc);
2. 上面說的都是在非具體的Service中進行操作,下面來看看Service需要處理哪些內容:
public boolean onUnbind (Intent intent) //反綁定服務時做清理工作
Java代碼:
public boolean onUnbind (Intent intent) //反綁定服務時做清理工作
public void onRebind (Intent intent) //重新綁定時觸發
public abstract IBinder onBind (Intent intent) //我們需要返回一個IBinder對象,所以要實現這個抽象方法
3. 實現onBind方法,這裡我們簡單的給服務的調用者傳遞一個Service的實例
Java代碼:
public class cwjBinder extends Binder{
cwjService fetchService()
{
return cwjService.this;
}
}
我們在構造Service時實例化cwjBinder使用cwjBinder binderObj=new cwjBinder();這時我們在onBind()的返回時設置為binderObj而不是null了。
4. 回到我們調用Service的地方,在ServiceConnection中的 onServiceConnected 方法第二個參數就是我們剛才的IBinder實例了, 該方法原型為 public void onServiceConnected(ComponentName name, IBinder service) ,這時我們可以調用 fetchService方法了。
在前面的一篇文章中,簡單的介紹了一下如何實現軟鍵盤不自動彈出,使用的方法是設置android:windowSoftInput
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
Android提供了許多方法來控制播放的音頻/視頻文件和流。其中該方法是通過一類稱為MediaPlayer。Android是提供MediaPlayer類訪問內置的媒體播放
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我