日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 第四章 Android開發三大基石―Activity、Service和Handler(5)

第四章 Android開發三大基石―Activity、Service和Handler(5)

來源:程序員人生   發布時間:2015-02-09 08:20:40 閱讀次數:2815次

2)和Activity交互的本地服務

剛剛我們介紹的Service是不需要與Activity進行交互的,現在我們再來看看與Activity交互的本地服務。首先,我們新建1個BindLocalServide類繼承自Serivce,代碼以下:

// import略

public class BindLocalServideextends Service {

 

    private static final String TAG = "localservice";

    private MyBinder myBinder = new MyBinder();

   

    @Override

    public IBinder onBind(Intent intent) {

        return myBinder;

    }

    @Override

    public void onCreate() {

        super.onCreate();

    }

    @Override

    public void onDestroy() {

        super.onDestroy();

    }

    @Override

    public void onStart(Intent intent, int startId) {

        super.onStart(intent, startId);

    }

    @Override

    public boolean onUnbind(Intent intent) {

        return super.onUnbind(intent);

    }

 

    public class MyBinder extends Binder{

        public LocalService getService(){

            return LocalService.this;

        }

    }

}

 

然后,我們新建1個BindServiceActivity類繼承自Actvity,代碼以下:

// import略

public class BindServiceActivity extends Activity{

 

     private Button startBtn,stopBtn;

     private boolean flag;

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.localservice);

        startBtn = (Button)findViewById(R.id.start_button);

        stopBtn = (Button)findViewById(R.id.stop_button);

        startBtn.setOnClickListener(new View.OnClickListener() {

             @Override

             public void onClick(View v) {

                 Intent intent = new Intent(BindServiceActivity.this,LocalService.class);

                bindService(intent, conn, Context.BIND_AUTO_CREATE);

             }

        });

        stopBtn.setOnClickListener(new View.OnClickListener() {

             @Override

             public void onClick(View v) {

                 if(flag == true){

                    unbindService(conn);

                    flag = false;

                }

             }

        });

    }

    private ServiceConnection conn = new ServiceConnection() {

        @Override

        public void onServiceDisconnected(ComponentName name) {

           

        }

 

        @Override

        public void onServiceConnected(ComponentName name, IBinder service) {

             MyBinder binder = (MyBinder)service;

            LocalService bindService = binder.getService();

            bindService.MyMethod();

            flag = true;

        }

    };

}

 

在這里,也是使用之前使用過的localservice.xml布局文件,定義了“啟動”和“停止”兩個按鈕。另外,別忘了在AndroidMainfest.xml中注冊Service:

<service android:name=". BindLocalServideextends "/>

 

--------------------------------------------
試著放個廣告 現在沒工作 要生存 沒辦法
平安陸金所 隸屬于平安團體的p2p平臺
年投資回報率7%-9% 是替換銀行理財的首選
個人經驗教訓 推薦投資安鑫或有擔保的彩虹項目
不要投資安e 那個幾近沒法轉讓 想提早提現非常困難
注冊鏈接 http://affiliate.lufax.com/action/36XBU
用此鏈接注冊 你我都會有幾10元的額外現金嘉獎
--------------------------------------------

這里可以發現onBind需要返回1個IBinder對象。也就是說和上1例子LocalService不同的是:

1)添加了1個public內部類繼承Binder,并添加getService方法來返回當前的Service對象;

2)新建1個IBinder對象――new那個Binder內部類;

    3)onBind方法返還那個IBinder對象。

然后,我們來看看打印出來的效果,如圖4⑻所示:

圖4⑻ onBind Service履行順序

 

通過日志,我們可以發現,通過bindService這類方法啟動服務,當服務啟動后,屢次啟動只有第1次有效,并且與服務相綁定的Activity“死亡”時,該服務也停止。

4.2.4開機自啟動的服務

我們在使用某些Android利用的時候,可能會發現安裝了某個利用以后,會有1些服務也會隨之運行。而且,有的服務每次都會隨著手機開機而自動啟動。下面,就讓我們1起來看看是怎樣樣實現開機自啟動服務的。

首先,我們需要來了解1下Android中的 BroadcastReceiver:

BroadcastReceiver也就是“廣播接收者”的意思,顧名思義,它就是用來接收來自系統和利用中的廣播。

在Android系統中,廣播利用在各個方面。例如當開機完成后系統會產生1條廣播,接收到這條廣播就可以實現開機啟動服務的功能;當網絡狀態改變時系統會產生1條廣播,接收到這條廣播就可以及時地做出提示和保存數據等操作;當電池電量改變時,系統會產生1條廣播,接收到這條廣播就可以在電量低時告知用戶及時保存進度,等等。

正是基于這樣的原理,只要實現1個BroadcastReceiver,我們就能夠監聽開機時候的廣播(手機啟動完成的事件ACTION_BOOT_COMPLETED),當收到開機“信號”時,啟動相應的服務。

我們用1個簡單的例子來看看它是如何實現的。

首先,我們新建1個MyReceiver類繼承自BroadcastReceiver,代碼以下:

// import略

public class MyReceiver extends BroadcastReceiver {

 

private static final String POWERN_ON_ACTION = "android.intent.action.BOOT_COMPLETED";

 

    public void onReceive(Context context, Intent intent) {

        if (intent.getAction().equals(POWERN_ON_ACTION)) {

        startService(new Intent("com.char4.LOCAL_SERVICE"));       

}

    }

}

 

我們要讓這個Receiver工作,需要把它注冊到Android系統上,去監聽廣播的BOOT_COMPLETED intent。在AndroidManifest.xml中添加以下代碼:

<receiver android:name=".MyReceiver" >

      <intent-filter>

            <action android:name="android.intent.action.BOOT_COMPLETED"/>

      </intent-filter>

</receiver>

 

這樣重新開機以后,服務就會在系統啟動終了后自動運行了。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品18久久久久久久网站 | 国产精品二区在线 | 亚洲一区二区国产 | 不卡中文一区 | 亚洲精品国产精品乱码在线观看 | 国产毛片久久久久久国产毛片 | 麻豆av福利av久久av | www.夜夜操.com | 国产精品午夜在线 | 日韩欧美一区二区三区 | 精品成人一区二区 | 国产精品一二区 | 日韩中文字幕av在线 | 国产 第1163页| 久久久久国产精品一区 | 天天干网 | 日本毛片在线观看 | 中文字幕 国产精品 | 久久国产精品一区 | 久久国内精品视频 | 毛片一区二区三区 | 久久久久久国产精品美女 | 激情影院免费观看 | 国产一区二区免费 | 国产精品久久久久久久久久东京 | 可以免费看av的网站 | 国精品一区二区 | 国产二区在线播放 | 免费在线国产视频 | 日韩网站免费观看 | 日韩精品在线免费 | 97av中文字幕 | 国产精品99久久久久久似苏梦涵 | 欧美日韩免费看片 | 中国一级黄色大片 | 国产高清免费视频 | 女人一区二区三区 | 国产精品美女一区二区三区 | 国产伦精品一区二区三区免费迷 | 毛片毛片毛片毛片毛片毛片 | 欧美人交a欧美精品 |