您好,登錄后才能下訂單哦!
做Android開發的都知道,啟動或綁定服務的語句是startService、bindService,可是這兩個方法一般都只能在Activity中使用,也就是用Activity才能“.”的出這方法。那如何在非Activity中開始、綁定服務呢?
以Fragment為例:
一個MyFragment類是繼承Fragment,他不是Activity類型。但是,一個非Activity的類總是和Activity類有關聯的,需要在Activity中調用非Activity中的參數、方法之類,這就給了我們在非Activity類中調用startService、bindService的機會。即將Activity類名這個參數傳到非Activity中,然后調用方法啟動服務。
如在Activity中調用MyFragment的時候:
FragmentManager fragmentMgr = getSupportFragmentManager();
FragmentTransaction ft = fragmentMgr.beginTransaction();
MyFragment fragment = new MyFragment(this); 在這一句里加一個參數
ft.add(R.id.main_tab1_bofang, fragment );
ft.commit();
然后,我們在MyFragment中創建一個以Activity為參數類型的構造方法:
public MyFragment(Activity Activity) {
Log.e("onCreateView", "準備綁定服務");
Intent service=new Intent(Activity.getApplicationContext(),MusicService.class);
Activity.getApplicationContext().bindService(service, conn, Context.BIND_AUTO_CREATE);
}
注意事項:在一些類中,我們不能直接使用bindService這個方法,得通過Activity.getApplicationContext()來使用,如在TabActivity類中。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。