FMUSER Wirless Transmet vídeo i àudio més fàcil!

[protegit per correu electrònic] WhatsApp + 8618078869184
Llenguatge

    Explicació detallada de l'emissió a Android

     

    L'emissió es divideix en dos tipus diferents: "Emissions normals" i "Emissions ordenades". L’emissió ordinària és completament asíncrona i la poden rebre tots els receptors d’emissió alhora (lògicament). L’eficiència de l’enviament de missatges és relativament alta, però l’inconvenient és que el receptor no pot passar el resultat del processament al següent receptor i no es pot acabar. Propagació de la intenció de difusió; tanmateix, l'emissió ordenada es basa en la prioritat declarada pel receptor (declarada a l'atribut android: priority de l'element filter-intent, com més gran sigui el nombre, major serà la prioritat, l'interval de valors: -1000 a 1000. També és possible Truqueu al setPriority () de l’objecte IntentFilter a configurar) i el destinatari rebrà l’emissió al seu torn. Per exemple, si el nivell d'A és superior al de B i el nivell de B és superior a C, llavors l'emissió es transmet primer a A, després a B i, finalment, a C. Després que A obtingui l'emissió, pot emmagatzemar dades a l'emissió. Quan l'emissió s'envia a B, B pot obtenir les dades emmagatzemades per A de l'emissió.

     

    Context.sendBroadcast ()

       El que s’envia és una transmissió ordinària i tots els subscriptors tenen l’oportunitat d’obtenir-la i processar-la.

     

    Context.sendOrderedBroadcast ()

       L’enviament és una transmissió ordenada. El sistema executarà els receptors un per un segons la prioritat declarada pel receptor. El receptor anterior té dret a finalitzar l’emissió (BroadcastReceiver.abortBroadcast ()). Si l’emissor finalitza l’emissió, aquest últim ja no pot obtenir l’emissió. Per a la difusió ordenada, el receptor anterior pot emmagatzemar el resultat del processament a la intenció de difusió i després passar-lo al receptor següent.

     
    El receptor de difusió (BroadcastReceiver) s’utilitza per rebre Intent de difusió i l’enviament de Intent de difusió es realitza trucant a Context.sendBroadcast () i Context.sendOrderedBroadcast (). Normalment, diversos destinataris de transmissió subscrits a aquesta intenció poden rebre una intenció de difusió. Aquesta característica és similar als receptors de missatges Topic de JMS. Per implementar un mètode de receptor de transmissió és el següent:

     

    El primer pas: definiu el receptor de difusió, hereteu BroadcastReceiver i reescriviu el mètode onReceive ().

    classe pública IncomingSMSReceiver extendsBroadcastReceiver {
      @Override public void onReceive (Contextcontext, Intentintent) {
      }
    }

     

    Pas 2: subscriviu-vos a l'emissió Intenció d'interès, hi ha dos mètodes de subscripció:

    El primer tipus: utilitzeu el codi per subscriure-us (subscripció dinàmica)

    Filtre IntentFilter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
    Receptor IncomingSMSReceiver = newIncomingSMSReceiver ();
    registerReceiver (receptor, filtre);

     

    El segon tipus: subscriviu-vos al fitxer node al fitxer AndroidManifest.xml (subscripció estàtica)


      
           
      


    Vegem la diferència entre la subscripció de transmissió dinàmica i la subscripció de transmissió estàtica:
    L’emissió estàtica de subscripció també s’anomena emissió resident. Quan es tanca la vostra sol·licitud, si hi ha un missatge de difusió, també el pot rebre el receptor de difusió que vau escriure. El seu mètode de registre és AndroidManifast a la vostra aplicació. .xml per subscripció.

     

    L’emissió de subscripció dinàmica també s’anomena emissió no resident. Quan finalitzi l'aplicació, l'emissió desapareixerà naturalment. Per exemple, us subscriviu a l'emissió a onCreate o onResume a l'activitat i heu de cancel·lar la subscripció a broadcast a onDestory o onPause. En cas contrari, s’informarà d’una excepció, de manera que el vostre receptor d’emissió no serà resident.

     

    Aquí hi ha un detall més que són els dos mètodes de subscripció. Quan envieu emissions, heu de prestar atenció a: El mètode d’intenció implícita s’utilitza per al registre dinàmic, de manera que heu d’utilitzar la intenció implícita per enviar quan envieu emissions. , En cas contrari, el receptor de difusió no podrà rebre l'emissió. Preste atenció a aquest punt. Però quan us subscriviu estàticament, ja que està subscrit a AndroidMainfest.xml, és possible utilitzar la intenció de visualització i la intenció implícita a l’hora d’enviar retransmissions (per descomptat, això només és per a receptors d’emissions definits per nosaltres mateixos), de manera que, per si de cas, generalment fem servir implícits. Intenció d'enviar difusió.

     

    Vegem un exemple:

    Mireu l’estructura del projecte:

     

    Mireu l’emissió estàtica de subscripció:
    paquet com.broadcast.demo;

    importa android.app.Activity;
    importa android.content.Intent;
    importar android.os.Bundle;
    importa android.view.View;
    importa android.view.View.OnClickListener;
    importa android.widget.Button;

    importació com.exemple.androidbroadcastdemo.R;

    / **
     * Emissió estàtica de subscripció
     * @autor weijiang204321
     *
     */
    public class StaticRegisterBroadcastActivity amplia l'activitat {

    @Anul·lació
    buit protegit onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Botó btn = (Botó) findViewById (R.id.btn);
    A
    btn.setOnClickListener (nou OnClickListener () {
    @Anul·lació
    public void onClick (View v) {
    // Utilitzeu una forma estàtica per registrar l'emissió, podeu utilitzar la intenció de visualització per enviar-la
    Intent broadcast = new Intent ("com.broadcast.set.broadcast");
    sendBroadcast (emissió, nul·la);
    }
    A
    });
    }
    A
    }


    Subscriu-te a AndroidMainfest.xml:



    <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" />
       
       
       
       
       
       

        <aplicació
            android: allowBackup = "true"
            android: icon = "@ drawable / ic_launcher"
            android: label = "@ string / app_name"
            android: theme = "@ style / AppTheme">
            <activitat
                android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
                android: label = "@ string / app_name">
               
                   
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
       

    No us preocupeu per l’altre contingut de moment, ja que en parlarem més endavant, aquí només ens centrem en el registre d’emissions estàtiques


          
               
                   
               
           


    Fem una ullada al receptor de l'emissió:

    paquet com.broadcast.receiver;

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

    / **
     * Receptor d’emissió
     * @autor weijiang204321
     *
     */
    UnSortBroadcastReceiver de classe pública amplia BroadcastReceiver {

    @Anul·lació
    public void onReceive (context context, Intent intent) {
    Log.e ("Intent_Action:", intent.getAction () + "");
    }

    }
    La lògica del mètode onReceive al receptor de difusió és molt senzilla, és a dir, imprimir el contingut de l’acció.
    Executeu el programa, el resultat és molt senzill, aquí no hi ha la imatge.

     

    Vegem les subscripcions dinàmiques:


    paquet com.broadcast.demo;

    importa android.app.Activity;
    importa android.content.Intent;
    importa android.content.IntentFilter;
    importar android.os.Bundle;
    importa android.view.View;
    importa android.view.View.OnClickListener;
    importa android.widget.Button;

    importació com.broadcast.receiver.UnSortBroadcastReceiver;
    importació com.exemple.androidbroadcastdemo.R;

    / **
     * Utilitzeu una forma dinàmica per registrar l'emissió
     * @autor weijiang204321
     *
     */
    public class DynamicRegisterBroadcastActivity amplia l'activitat {
    A
    public static final String NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
    receptor protegit UnSortBroadcastReceiver;
    A
    @Anul·lació
    buit protegit onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Botó btn0 = (Botó) findViewById (R.id.btn);
    btn0.setOnClickListener (nou OnClickListener () {
    public void onClick (View v) {
    // Enviar transmissió
    Intent it = new Intent (NEW_LIFEFORM_DETECTED);
    sendBroadcast (it);
    }
    });
    }

    @Anul·lació
    buit protegit a Resume () {
    super.onResume ();
    // Registra't per emetre
    IntentFilter counterActionFilter = nou IntentFilter (NEW_LIFEFORM_DETECTED);
    receptor = new UnSortBroadcastReceiver ();
    registerReceiver (receptor, counterActionFilter);
    }

    @Anul·lació
    buit protegit onPause () {
    super.onPause ();
    // Cancel·la l'emissió
    unregisterReceiver (receptor);
    }
    }
    Aquí ens subscrivim a l'emissió a onResume i ens donem de baixa a l'emissió a onPause.
    Canvieu l'activitat llançada a DynamicRegisterBroadcastActivity a AndroidMainfest.xml. No cal modificar l’altre contingut. Executeu el programa i imprimiu el resultat molt senzill, de manera que no veuré la imatge aquí.

     

    Fem una ullada a la difusió ordenada i la difusió no ordenada

    Ja ho hem esmentat al principi, donem una ullada a la transmissió desordenada:

    Primer definim dos receptors de difusió:

    El primer receptor de transmissió:


    paquet com.broadcast.receiver;

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

    / **
     * Receptor de difusió A
     * @autor weijiang204321
     *
     */
    classe pública SortBroadcastReceiverA amplia BroadcastReceiver {

    @Anul·lació
    public void onReceive (context context, Intent intent) {
    Log.e ("Demostració:", "receptor de difusió A");
    }

    }
    El segon receptor de transmissió:

    paquet com.broadcast.receiver;

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

    / **
     * Receptor d’emissió B
     * @autor weijiang204321
     *
     */
    classe pública SortBroadcastReceiverB amplia BroadcastReceiver {

    @Anul·lació
    public void onReceive (context context, Intent intent) {
    Log.e ("Demostració:", "Emissió B");
    }

    A
    A
    }


    Subscriviu-vos per emetre a AndroidMainfest.xml


     
               
                   
               

           

               
                   
               

    resultat de l'operació:


    El resultat corrent és una mica estrany. Per què hi ha el receptor B al davant i el receptor A al darrere? El motiu és que quan ens subscrivim a l'emissió a AndroidMainfest.xml, establim el valor de l'atribut android: priority al filtre d'intenció. Com més gran sigui el valor, major serà la prioritat. , La prioritat del receptor B és 1000, la prioritat del receptor A és 999, de manera que B rep l'emissió primer i després A la rep, però no hi ha connexió entre el receptor B i el receptor A i no hi pot haver interacció. Sí, Com que es tracta d'una difusió fora d'ordre i asíncrona, podem fer un experiment afegint codi al mètode onReceiver a B:

    abortBroadcast (); // Finalitza la transmissió d’aquesta transmissió

    resultat de l'operació:

     

    Podem veure l’error immediat, és a dir, que no es permet que l’emissió no ordenada finalitzi l’emissió. De fet, la terminació no serveix de res, perquè el receptor A encara rep l’emissió.

     

    Fem una ullada a la difusió ordenada, cal modificar el codi:

    El primer és quan s’envia una emissió:


    Intent broadcast = new Intent ("com.broadcast.set.broadcast");
    sendOrderedBroadcast (emissió, nul·la);
    A continuació, afegiu un mètode per finalitzar l'emissió al receptor B:
    abortBroadcast ();

    No cal modificar l'altre codi, el resultat de l'operació:

     

    Només hi ha un receptor B, el receptor A no rep l’emissió, perquè l’emissió s’acaba al receptor B i els receptors posteriors no la poden acceptar.

    Modifiqueu el codi següent:

    Destinatari B:


    paquet com.broadcast.receiver;

    importa android.content.BroadcastReceiver;
    importa android.content.Context;
    importa android.content.Intent;
    importar android.os.Bundle;
    importa android.util.Log;

    / **
     * Receptor d’emissió B
     * @autor weijiang204321
     *
     */
    classe pública SortBroadcastReceiverB amplia BroadcastReceiver {

    @Anul·lació
    public void onReceive (context context, Intent intent) {
    Log.e ("Demostració:", "receptor de difusió B");
    Paquet de paquets = paquet nou ();
    bundle.putString ("receptor_pròxim", "receptor de transmissió següent");
    setResultExtras (paquet);
    }
    A
    }
    Després que B rebi l'emissió, emmagatzema un cert valor i el passa al següent receptor.


    Codi del receptor A:


    paquet com.broadcast.receive

     

     

     

     

    Una llista de totes pregunta

    sobrenom

    Email

    preguntes

    El nostre altre producte:

    Paquet d'equips d'estació de ràdio FM professional

     



     

    Solució IPTV hotelera

     


      Introduïu el correu electrònic per obtenir una sorpresa

      fmuser.org

      es.fmuser.org
      it.fmuser.org
      fr.fmuser.org
      de.fmuser.org
      af.fmuser.org -> afrikaans
      sq.fmuser.org -> Albanès
      ar.fmuser.org -> Àrab
      hy.fmuser.org -> Armeni
      az.fmuser.org -> Azerbaidjanès
      eu.fmuser.org -> basc
      be.fmuser.org -> bielorús
      bg.fmuser.org -> Bulgària
      ca.fmuser.org -> català
      zh-CN.fmuser.org -> Xinès (simplificat)
      zh-TW.fmuser.org -> Xinès (tradicional)
      hr.fmuser.org -> croata
      cs.fmuser.org -> txec
      da.fmuser.org -> Danès
      nl.fmuser.org -> Holandès
      et.fmuser.org -> estonià
      tl.fmuser.org -> filipí
      fi.fmuser.org -> finès
      fr.fmuser.org -> Francès
      gl.fmuser.org -> gallec
      ka.fmuser.org -> georgià
      de.fmuser.org -> alemany
      el.fmuser.org -> Grec
      ht.fmuser.org -> crioll haitià
      iw.fmuser.org -> Hebreu
      hi.fmuser.org -> Hindi
      hu.fmuser.org -> Hungarian
      is.fmuser.org -> islandès
      id.fmuser.org -> indonesi
      ga.fmuser.org -> irlandès
      it.fmuser.org -> Italià
      ja.fmuser.org -> japonès
      ko.fmuser.org -> coreà
      lv.fmuser.org -> Letó
      lt.fmuser.org -> Lituània
      mk.fmuser.org -> macedoni
      ms.fmuser.org -> Malai
      mt.fmuser.org -> maltès
      no.fmuser.org -> Noruega
      fa.fmuser.org -> persa
      pl.fmuser.org -> Polonès
      pt.fmuser.org -> Portuguès
      ro.fmuser.org -> Romanès
      ru.fmuser.org -> rus
      sr.fmuser.org -> serbi
      sk.fmuser.org -> Eslovac
      sl.fmuser.org -> Eslovènia
      es.fmuser.org -> Castellà
      sw.fmuser.org -> Suahili
      sv.fmuser.org -> Suec
      th.fmuser.org -> Tai
      tr.fmuser.org -> turc
      uk.fmuser.org -> ucraïnès
      ur.fmuser.org -> urdú
      vi.fmuser.org -> Vietnamita
      cy.fmuser.org -> gal·lès
      yi.fmuser.org -> Yiddish

       
  •  

    FMUSER Wirless Transmet vídeo i àudio més fàcil!

  • Contacte

    Adreça:
    No.305 Room HuiLan Building No.273 Huanpu Road Guangzhou Xina 510620

    Correu electrònic:
    [protegit per correu electrònic]

    Tel/WhatsApps:
    + 8618078869184

  • Categories

  • Newsletter

    PRENOM O NOM COMPLET

    Correu electrònic

  • solució paypal  Unió OccidentalBanc de la Xina
    Correu electrònic:[protegit per correu electrònic]   WhatsApp: +8618078869184 Skype: sky198710021 xerrar amb mi
    Els drets d'autor 2006 2020-accionada pel www.fmuser.org

    Contacta'ns