Az FMUSER Wirless könnyebben továbbítja a videót és a hangot!

[e-mail védett] WhatsApp + 8618078869184
Nyelv

    A Broadcast részletes ismertetése az Android rendszerben

     

    A műsorszórás két különböző típusra oszlik: "Normál adások" és "Rendezett adások". A közönséges adás teljesen aszinkron, és minden adás vevője egyszerre fogadhatja (logikusan). Az üzenet kézbesítésének hatékonysága viszonylag magas, de hátránya, hogy a vevő nem tudja átadni a feldolgozási eredményt a következő vevőnek, és nem lehet befejezni. Broadcast Intent terjesztése; a megrendelt sugárzás azonban a vevő által deklarált prioritáson alapul (deklarálva az szándék-szűrő elem android: prioritás attribútumában, minél nagyobb a szám, annál nagyobb a prioritás, az értéktartomány: -1000 és 1000 között.) lehetséges Hívja meg a beállítandó IntentFilter objektum setPriority () beállítását, és a címzett felveszi az adást. Például, ha A szintje magasabb, mint B szintje, és B szintje magasabb, mint C, akkor az adást először A-nak, majd B-nek, végül C-nek továbbítják. Miután A megkapja az adást, adatokat tárolhat az adásban. Amikor az adást B-nek küldik, B megszerezheti az A által tárolt adatokat az adásból.

     

    Context.sendBroadcast ()

       Az elküldött egy közönséges adás, és minden előfizetőnek lehetősége van megszerezni és feldolgozni.

     

    Context.sendOrderedBroadcast ()

       A küldés rendezett közvetítés. A rendszer egyenként végrehajtja a vevőket a vevő által deklarált prioritásnak megfelelően. Az előző vevőnek joga van befejezni az adást (BroadcastReceiver.abortBroadcast ()). Ha az adást az előző vevő fejezi be, az utóbbi A vevő már nem tudja elérni az adást. Rendelt adás esetén az előző vevő tárolja a feldolgozás eredményét a broadcast szándékban, majd továbbíthatja a következő vevőnek.

     
    A Broadcast vevő (BroadcastReceiver) a műsorszórási szándék fogadására szolgál, és a műsorszórási szándék elküldése a Context.sendBroadcast () és a Context.sendOrderedBroadcast () meghívásával valósul meg. Általában egy műsorszórási szándékot több, erre a szándékra előfizető műsorvevő fogadhat. Ez a szolgáltatás hasonló a JMS Témakör üzenetvevőihez. Az adás vevő módszerének megvalósítása a következő:

     

    Az első lépés: definiálja a sugárzott vevőt, örökölje a BroadcastReceiver-t és írja át az onReceive () metódust.

    public class IncomingSMSReceiver kiterjeszti a BroadcastReceiver {
      @Orride public void onReceive (Contextcontext, Intentintent) {
      }
    }

     

    2. lépés: Iratkozzon fel a kívánt érdeklődésre, két előfizetési módszer létezik:

    Az első típus: használjon kódot az előfizetéshez (dinamikus előfizetés)

    IntentFilter szűrő = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
    IncomingSMSReceiver vevő = newIncomingSMSReceiver ();
    registerReceiver (vevő, szűrő);

     

    A második típus: Iratkozzon fel a csomópont az AndroidManifest.xml fájlban (statikus előfizetés)


      
           
      


    Vessünk egy pillantást a dinamikus sugárzott előfizetés és a statikus műsor-előfizetés közötti különbségre:
    A statikus előfizetéses közvetítést más néven: rezidens közvetítésnek nevezik. Ha az alkalmazás lezárult, és van üzenet, akkor az általad írt adóvevő is meg tudja fogadni. Regisztrációs módja az AndroidManifast az alkalmazásban. .xml előfizetéshez.

     

    A dinamikus előfizetéses közvetítést más néven: nem rezidens közvetítésnek nevezik. Amikor az alkalmazás véget ér, az adás természetesen eltűnik. Például feliratkozik a közvetítésre a tevékenység onCreate vagy onResume programjában, és le kell mondania a közvetítés előfizetését az onDestory vagy az onPause szolgáltatásban. Ellenkező esetben kivételről számolunk be, így az adás vevője nem rezidens lesz.

     

    Van még egy részlet, ez a két előfizetési módszer. Közvetítések küldésekor ügyelnie kell a következőkre: Az implicit szándék metódust használják a dinamikus regisztrációhoz, ezért sugárzások küldésénél implicit szándékot kell használnia a küldésre. , Ellenkező esetben a vevő nem tudja fogadni az adást. Figyeljen erre a pontra. De statikus előfizetés esetén, mivel az AndroidMainfest.xml fájlra feliratkozott, lehetőség van az Intent és implicit Intent megjelenítésre is adások küldésénél (természetesen ez csak a saját magunk által meghatározott műsorszórókra vonatkozik), ezért csak arra az esetre használjuk általában Közvetítés küldésének szándéka.

     

    Nézzünk meg egy példát:

    Vessen egy pillantást a projekt felépítésére:

     

    Vessen egy pillantást a statikus előfizetéses közvetítésre:
    com.broadcast.demo csomag;

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    android.view.View.OnClickListener importálása;
    import android.widget.Button;

    importálja a com.example.androidbroadcastdemo.R;

    / **
     * Statikus előfizetéses közvetítés
     * @szerző weijiang204321
     *
     */
    a public class StaticRegisterBroadcastActivity kiterjeszti a tevékenységet {

    @Override
    védett void onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Gomb btn = (Gomb) findViewById (R.id.btn);
    Nak nek
    btn.setOnClickListener (új OnClickListener () {
    @Override
    public void onClick (Nézet v) {
    // Statikus módon regisztrálhatja az adást, a megjelenítés szándékával pedig elküldheti az adást
    Szándékközvetítés = új szándék ("com.broadcast.set.broadcast");
    sendBroadcast (broadcast, null);
    }
    Nak nek
    });
    }
    Nak nek
    }


    Feliratkozás az AndroidMainfest.xml fájlra:


    <? Xml version = "1.0" encoding = "UTF-8"?>
    <manifest xmlns:android="
    http://schemas.android.com/apk/res/android"
        package = "com.example.androidbroadcastdemo"
        android: versionCode = "1"
        android: versionName = "1.0">

        <uses-sdk
            android: minSdkVersion = "8"
            android: targetSdkVersion = "18" />
       
       
       
       
       
       

        <alkalmazás
            android: allowBackup = "true"
            android: icon = "@ drawable / ic_launcher"
            android: label = "@ string / app_name"
            android: theme = "@ style / AppTheme">
            <tevékenység
                android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
                android: label = "@ string / app_name">
               
                   
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
       

    Egyelőre ne aggódjon a többi tartalom miatt, amiről később beszélünk, itt csak a statikus adások regisztrálására összpontosítunk


          
               
                   
               
           


    Vessünk egy pillantást az adás vevőjére:

    csomag com.broadcast.receiver;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;

    / **
     * Broadcast vevő
     * @szerző weijiang204321
     *
     */
    public class UnSortBroadcastReceiver kiterjeszti a BroadcastReceiver {

    @Override
    public void onReceive (Kontextus kontextus, Intent szándék) {
    Log.e ("Intent_Action:", szándék.getAction () + "");
    }

    }
    A broadcast vevő onReceive metódusának logikája nagyon egyszerű, vagyis az Action tartalmának kinyomtatása.
    Futtassa a programot, az eredmény nagyon egyszerű, itt nem ez a kép.

     

    Vessünk egy pillantást a dinamikus előfizetésekre:


    com.broadcast.demo csomag;

    import android.app.Activity;
    import android.content.Intent;
    android.content.IntentFilter importálása;
    import android.os.Bundle;
    import android.view.View;
    android.view.View.OnClickListener importálása;
    import android.widget.Button;

    import com.broadcast.receiver.UnSortBroadcastReceiver;
    importálja a com.example.androidbroadcastdemo.R;

    / **
     * Dinamikus módon regisztrálhatja a sugárzást
     * @szerző weijiang204321
     *
     */
    a nyilvános osztály DynamicRegisterBroadcastActivity kiterjeszti a tevékenységet {
    Nak nek
    public static final String NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
    védett UnSortBroadcastReceiver vevő;
    Nak nek
    @Override
    védett void onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Gomb btn0 = (Gomb) findViewById (R.id.btn);
    btn0.setOnClickListener (új OnClickListener () {
    public void onClick (Nézet v) {
    // Adás küldése
    Intent it = új szándék (NEW_LIFEFORM_DETECTED);
    sendBroadcast (it);
    }
    });
    }

    @Override
    védett void onResume () {
    super.onResume ();
    // Regisztráció az adáshoz
    IntentFilter counterActionFilter = új IntentFilter (NEW_LIFEFORM_DETECTED);
    vevő = új UnSortBroadcastReceiver ();
    registerReceiver (vevő, counterActionFilter);
    }

    @Override
    védett void onPause () {
    szuper.onPause ();
    // Közvetítés megszakítása
    unregisterReceiver (vevő);
    }
    }
    Itt feliratkozunk az onResume műsorszolgáltatására, és leiratkozunk az onPause műsorszolgáltatásra.
    Az indított tevékenységet állítsa DynamicRegisterBroadcastActivity-re az AndroidMainfest.xml fájlban. A másik tartalmat nem kell módosítani. Futtassa a programot, és az eredmény kinyomtatása nagyon egyszerű, ezért itt nem látom a képet.

     

    Vessünk egy pillantást a megrendelt műsorszórásra és a rendezetlen műsorszórásra

    Ezt már az elején említettük, vessünk egy pillantást a rendezetlen műsorszolgáltatásra:

    Először két adás vevőt határozunk meg:

    Az első adás vevője:


    csomag com.broadcast.receiver;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;

    / **
     * Műsorszóró vevő A
     * @szerző weijiang204321
     *
     */
    public class SortBroadcastReceiverA kiterjeszti a BroadcastReceiver {

    @Override
    public void onReceive (Kontextus kontextus, Intent szándék) {
    Log.e ("Demo:", "A vevő vevő");
    }

    }
    A második adás vevője:

    csomag com.broadcast.receiver;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.util.Log;

    / **
     * Broadcast vevő B
     * @szerző weijiang204321
     *
     */
    public class SortBroadcastReceiverB kiterjeszti a BroadcastReceiver {

    @Override
    public void onReceive (Kontextus kontextus, Intent szándék) {
    Log.e ("Demo:", "Broadcast B");
    }

    Nak nek
    Nak nek
    }


    Iratkozzon fel az AndroidMainfest.xml fájlra


     
               
                   
               

           

               
                   
               

    működési eredmény:


    A futási eredmény kissé furcsa. Miért van a B vevő elöl és az A vevő hátul? Ennek oka az, hogy amikor feliratkozunk az AndroidMainfest.xml fájlra, akkor a szándék-szűrőben beállítjuk az android: priority attribútum értékét. Minél nagyobb az érték, annál nagyobb a prioritás. , A B vevő prioritása 1000, az A vevő prioritása 999, tehát B először fogadja az adást, majd A fogadja, de a B vevő és az A vevő között nincs kapcsolat, és nem lehet interakció Igen, Mivel ez egy soron kívüli sugárzás és aszinkron, kísérletet tehetünk úgy, hogy kódot adunk a B onReceiver metódusához:

    abortBroadcast (); // Állítsa le a közvetítés továbbítását

    működési eredmény:

     

    Láthatjuk az azonnali hibát, vagyis a nem rendelt adás nem zárhatja le az adást. Valójában a felmondás haszontalan, mert az A vevő továbbra is fogadja az adást.

     

    Vessünk egy pillantást a rendezett közvetítésre, a kódot módosítani kell:

    Az első a közvetítés küldésekor:


    Szándékközvetítés = új szándék ("com.broadcast.set.broadcast");
    sendOrderedBroadcast (broadcast, null);
    Ezután adjon hozzá egy módszert az adás leállításához a B vevőben:
    abortBroadcast ();

    A másik kódot nem kell módosítani, a művelet eredménye:

     

    Csak B vevő van, az A vevő nem fogadja az adást, mert a B vevőben az adás befejeződik, és a következő vevők nem tudják elfogadni.

    Módosítsa az alábbi kódot:

    B címzett:


    csomag com.broadcast.receiver;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;

    / **
     * Broadcast vevő B
     * @szerző weijiang204321
     *
     */
    public class SortBroadcastReceiverB kiterjeszti a BroadcastReceiver {

    @Override
    public void onReceive (Kontextus kontextus, Intent szándék) {
    Log.e ("Demo:", "B vevő vevő");
    Bundle bundle = új Bundle ();
    bundle.putString ("következő_fogadó", "következő adás vevője");
    setResultExtras (csomag);
    }
    Nak nek
    }
    Miután B megkapta az adást, eltárol bizonyos értéket és továbbítja a következő vevőnek.


    A vevő kódja:


    csomag com.broadcast.receive

     

     

     

     

    Sorold fel az összes kérdés

    Becenév

    E-mail

    Kérdések

    Másik termék:

    Professzionális FM rádióállomás felszerelési csomag

     



     

    Hotel IPTV megoldás

     


      Írja be az e-mail címet a meglepetéshez

      fmuser.org

      es.fmuser.org
      it.fmuser.org
      fr.fmuser.org
      de.fmuser.org
      af.fmuser.org -> afrikaans
      sq.fmuser.org -> albán
      ar.fmuser.org -> arab
      hy.fmuser.org -> örmény
      az.fmuser.org -> azerbajdzsán
      eu.fmuser.org -> baszk
      be.fmuser.org -> belorusz
      bg.fmuser.org -> bolgár
      ca.fmuser.org -> katalán
      zh-CN.fmuser.org -> kínai (egyszerűsített)
      zh-TW.fmuser.org -> kínai (hagyományos)
      hr.fmuser.org -> horvát
      cs.fmuser.org -> cseh
      da.fmuser.org -> dán
      nl.fmuser.org -> holland
      et.fmuser.org -> észt
      tl.fmuser.org -> filippínó
      fi.fmuser.org -> finn
      fr.fmuser.org -> francia
      gl.fmuser.org -> galíciai
      ka.fmuser.org -> grúz
      de.fmuser.org -> német
      el.fmuser.org -> Görög
      ht.fmuser.org -> haiti kreol
      iw.fmuser.org -> héber
      hi.fmuser.org -> hindi
      hu.fmuser.org -> magyar
      is.fmuser.org -> izlandi
      id.fmuser.org -> indonéz
      ga.fmuser.org -> ír
      it.fmuser.org -> olasz
      ja.fmuser.org -> japán
      ko.fmuser.org -> koreai
      lv.fmuser.org -> lett
      lt.fmuser.org -> litván
      mk.fmuser.org -> macedón
      ms.fmuser.org -> maláj
      mt.fmuser.org -> máltai
      no.fmuser.org -> norvég
      fa.fmuser.org -> perzsa
      pl.fmuser.org -> lengyel
      pt.fmuser.org -> portugál
      ro.fmuser.org -> román
      ru.fmuser.org -> orosz
      sr.fmuser.org -> szerb
      sk.fmuser.org -> szlovák
      sl.fmuser.org -> Szlovén
      es.fmuser.org -> spanyol
      sw.fmuser.org -> szuahéli
      sv.fmuser.org -> svéd
      th.fmuser.org -> Thai
      tr.fmuser.org -> török
      uk.fmuser.org -> ukrán
      ur.fmuser.org -> urdu
      vi.fmuser.org -> Vietnámi
      cy.fmuser.org -> walesi
      yi.fmuser.org -> jiddis

       
  •  

    Az FMUSER Wirless könnyebben továbbítja a videót és a hangot!

  • Kapcsolat

    Cím:
    No. 305 szoba HuiLan épület No.273 Huanpu Road Guangzhou, Kína 510620

    Email:
    [e-mail védett]

    Tel / WhatApps:
    +8618078869184

  • Kategóriák

  • Hírlevél

    ELSŐ VAGY TELJES NÉV

    E-mail

  • paypal megoldás  Western UnionKínai bank
    Email:[e-mail védett]   WhatsApp: +8618078869184 Skype: sky198710021 Beszélgess velem
    Szerzői 2006-2020 Powered By www.fmuser.org

    Kapcsolatba lép velünk