中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android學習筆記—第三章 Intent 意圖

發布時間:2020-07-17 02:05:52 來源:網絡 閱讀:280 作者:lyklykkk 欄目:移動開發

第三章 Intent 意圖

    Intent對象主要用來在Android程序的Activity、Service和BroadcastReceiver這三大組件之間傳輸數據。Intent分顯示意圖和隱式意圖兩種。

  1. 通過Intent對象跳轉界面,在不同界面間傳輸數據:

    a. 顯示意圖方式:代碼中指明具體的跳轉方向

    Intent intent = new Intent();         //創建一個Intent對象

    intent.setClass(Activity1.this,Activity2.class);    //指明跳轉方向

    intent.putExtra("key1","value1"); //傳遞數據。key表示數據的索引,vlaue表示要傳輸的數據

    intent.putExtra("key2","value2");

    ......                           //可以同時傳遞多個數據,以不同的key值區分

    startActivity(intent);          //無需返回結果方式開啟Activity

    startActivityForResult(intent,requestCode);  //帶返回結果的方式開啟Activity

    備注:startActivity()和startActivityForResult()根據實際情況任選一種方式。其中,startActivityForResult()中的requestCode參數用于區分是通過當前Activity中的哪一個組件開啟的Activity跳轉。例如:假設當前Activity 1中有兩個按鈕buttonA和buttonB,點擊兩個按鈕均跳轉到Activity 2,此時requestCode即用來區分開啟的Activity跳轉的是點擊了buttonA還是點擊了buttonB。跳轉之后,在所跳轉的Activity 2中接收數據的操作如下:

    Intent intent = getIntent();    //獲取Intent對象

    intent.getXXX("key");           //通過intent對象獲取數據。其中,getXXX("key")方法中,                                     XXX表示的是所傳遞的數據的數據類型,key要與傳遞數據時                                   putExtra()方法中對應數據的key值相同。

    如果所使用的跳轉方式是startActivityForResult(),則還可以在跳轉之后的Activity 2中使用putExtra()方法設置返回結果的值,然后使用setResult(resultCode,intent)方法設置返回標識。其中,requestCode參數與resultCode作用類似,只是方向相反,即從Activity 2→Activity 1。

    之后,可在Activity 1中重寫onActivityResult(int requestCode,int resultCode,Intent data)方法中獲取返回值并進行操作。

    b. 隱式意圖方式:代碼中沒有指明具體方向,而是在清單文件中配置過濾條件

    <intent-filter>

        <action android:name="xxx"/>

        <category android:name="android.intent.category.DEFAULT"/>

    </intent-filter>

  2. 通過Intent對象啟動Service服務的步驟

    a. 創建一個類MyService繼承Service

    b. 創建Intent對象,方向指向所創建的類MyService

    Intent intent = new Intent(this,MyService.class);

    c. 使用startService()方法直接啟動服務

    startService(intent);

    d. 通過bindService()方法綁定服務,進而啟動服務

    //先創建一個ServiceConnection對象

    ServiceConnection conn = new ServiceConnection();

    //使用bindService()方法,參數Context.BIND_AUTO_CREATE表示如果服務不存在,則自動創建一個

    bindService(intent,conn,Context.BIND_AUTO_CREATE);

    c. 停止服務

    stopService(intent);

    d. 解綁服務

    unbindService(conn);

  3. 通過Intent對象發送廣播步驟

    a. 在要發廣播的Activity中,創建Intent對象

    Intent intent = new Intent();

    b. 調用setAction()方法設置過濾條件

    intent.setAction("xxx");

    c. 發送廣播

    sendBroadcast(intent);

    d. 在接收廣播的Activity中創建一個類MyReceiver繼承BroadcastReceiver

    e. 在接收廣播的Activity中用代碼注冊廣播

    IntentFilter filter = new IntentFilter();

    filter.addAction("xxx");    //參數xxx要與intent.setAction()設置的參數一致

    或者在清單文件中注冊廣播

    <intent-filter>

        <action android:name="xxx">

    </intent-filter>

    f. 在接收廣播的Activity中創建一個MyReceiver對象

    MyReceiver receiver = new MyReceiver();

    g. 注冊廣播

    registerBroadcas(filter,receiver);

    h. 注銷廣播

    unregisterBroadcast(receiver);



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苍溪县| 淮阳县| 贡嘎县| 哈密市| 金川县| 庄浪县| 钦州市| 句容市| 古交市| 宜昌市| 威宁| 凤山县| 康保县| 乐陵市| 云南省| 额济纳旗| 利津县| 紫金县| 泸定县| 拜城县| 永昌县| 黎城县| 邢台县| 陈巴尔虎旗| 姚安县| 琼海市| 清流县| 北宁市| 东港市| 子长县| 沙洋县| 灯塔市| 潼关县| 双辽市| 县级市| 平邑县| 那曲县| 龙岩市| 津市市| 马尔康县| 广丰县|