FMUSER Wirless lähettää videota ja ääntä helpommin!

[sähköposti suojattu] WhatsApp + 8618078869184
Kieli

    Yksityiskohtainen kuvaus Broadcastista Androidissa

     

    Lähetys on jaettu kahteen eri tyyppiin: "Normaalilähetykset" ja "Tilatut lähetykset". Tavallinen lähetys on täysin asynkroninen ja sen voi vastaanottaa kaikki lähetysvastaanottimet samanaikaisesti (loogisesti). Viestien jakelun tehokkuus on suhteellisen korkea, mutta haittana on, että vastaanotin ei voi siirtää käsittelytulosta seuraavalle vastaanottimelle eikä sitä voida lopettaa. Broadcast Intent -lähetys; Tilattu lähetys perustuu kuitenkin vastaanottimen ilmoittamaan prioriteettiin (ilmoitettu aikomussuodatinelementin androidissa: prioriteetti-attribuutissa, mitä suurempi luku, sitä korkeampi prioriteetti, arvoalue: -1000 - 1000. Se on myös mahdollista Kutsu asetettavan IntentFilter-objektin setPriority ()) ja vastaanottaja vastaanottaa lähetyksen vuorotellen. Esimerkiksi, jos A: n taso on korkeampi kuin B: n ja B: n taso on korkeampi kuin C, lähetys lähetetään ensin A: lle, sitten B: lle ja lopulta C: lle. Kun A saa lähetyksen, se voi tallentaa tietoja lähetykseen. Kun lähetys lähetetään B: lle, B voi saada A: n tallentaman datan lähetyksestä.

     

    Context.sendBroadcast ()

       Lähetetään tavallinen lähetys, ja kaikilla tilaajilla on mahdollisuus hankkia ja käsitellä se.

     

    Context.sendOrderedBroadcast ()

       Lähetys on järjestetty lähetys. Järjestelmä suorittaa vastaanottimet yksitellen vastaanottimen ilmoittaman prioriteetin mukaisesti. Edellisellä vastaanottimella on oikeus lopettaa lähetys (BroadcastReceiver.abortBroadcast ()). Jos edellinen vastaanotin lopettaa lähetyksen, viimeksi mainittu Vastaanotin ei voi enää saada lähetystä. Tilattuun lähetykseen edellinen vastaanotin voi tallentaa käsittelytuloksen lähetystarkoitukseen ja siirtää sen seuraavaan vastaanottimeen.

     
    Lähetysvastaanotinta (BroadcastReceiver) käytetään lähetystarkoituksen vastaanottamiseen, ja lähetystarkoituksen lähetys toteutetaan kutsumalla Context.sendBroadcast () ja Context.sendOrderedBroadcast (). Yleensä lähetystarkoitus voidaan vastaanottaa usealla lähetysvastaanottimella, jotka ovat tilanneet tämän tarkoituksen. Tämä ominaisuus on samanlainen kuin JMS: n Aiheviestien vastaanottimet. Yleislähetysvastaanottimen käyttöönotto on seuraava:

     

    Ensimmäinen vaihe: määritä lähetysvastaanotin, peri BroadcastReceiver ja kirjoita onReceive () -menetelmä uudelleen.

    public class IncomingSMSReceiver laajentaaBroadcastReceiver {
      @Override public void onReceive (Contextcontext, Intentintent) {
      }
    }

     

    Vaihe 2: Tilaa kiinnostuksen kohde, on olemassa kaksi tilausmenetelmää:

    Ensimmäinen tyyppi: käytä koodia tilataksesi (dynaaminen tilaus)

    IntentFilter-suodatin = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
    IncomingSMSReceiver-vastaanotin = newIncomingSMSReceiver ();
    registerReceiver (vastaanotin, suodatin);

     

    Toinen tyyppi: Tilaa solmu AndroidManifest.xml-tiedostossa (staattinen tilaus)


      
           
      


    Katsotaanpa ero dynaamisen lähetystilauksen ja staattisen lähetystilauksen välillä:
    Staattista tilauslähetystä kutsutaan myös: asuntolähetykseksi. Kun lähetysviesti on suljettu, sovelluksesi on suljettu, kirjoittamasi lähetysvastaanotin voi myös vastaanottaa sen. Sen rekisteröintitapa on AndroidManifast sovelluksessasi. .xml tilattavaksi.

     

    Dynaamista tilauslähetystä kutsutaan myös: ulkomaalaislähetys. Kun sovellus päättyy, lähetys häviää luonnollisesti. Voit esimerkiksi tilata lähetyksen aktiviteetissa onCreate tai onResume ja sinun on peruutettava lähetystilaus onDestory- tai onPause-palvelussa. Muussa tapauksessa ilmoitetaan poikkeuksesta, joten lähetysvastaanottajasi ei ole asukas.

     

    Tässä on vielä yksi yksityiskohta, jotka ovat kaksi tilausmenetelmää. Lähetettäessä lähetyksiä sinun on kiinnitettävä huomiota: implisiittisen aikomuksen menetelmää käytetään dynaamiseen rekisteröintiin, joten sinun on käytettävä implisiittistä aikomusta lähettää lähetettäessä lähetyksiä. , Muuten lähetysvastaanotin ei pysty vastaanottamaan lähetystä. Kiinnitä huomiota tähän kohtaan. Mutta kun tilaat staattisesti, koska se on tilattu AndroidMainfest.xml: ssä, lähetyksiä lähetettäessä on mahdollista käyttää näyttöä Intent and implicit Intent (tietysti tämä koskee vain itse määrittelemiä lähetysvastaanottimia), joten käytämme yleensä vain implisiittisiä Tarkoitus lähettää lähetys.

     

    Katsotaanpa esimerkkiä:

    Katsokaa projektin rakennetta:

     

    Katso staattinen tilauslähetys:
    paketti com.broadcast.demo;

    tuoda android.app.Activity;
    tuonti android.content.Intent;
    tuonti android.os.Bundle;
    tuoda android.view.View;
    tuo android.view.View.OnClickListener;
    tuonti android.widget.Button;

    tuo com.example.androidbroadcastdemo.R;

    / **
     * Staattinen tilauslähetys
     * @tekijä weijiang204321
     *
     */
    public class StaticRegisterBroadcastActivity laajentaa toimintaa {

    @Ohittaa
    suojattu void onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Button btn = (painike) findViewById (R.id.btn);
    jotta
    btn.setOnClickListener (uusi OnClickListener () {
    @Ohittaa
    public void onClick (Näytä v) {
    // Käytä staattista tapaa rekisteröidä lähetys, voit käyttää lähetystä lähetyksen avulla
    Tarkoituslähetys = uusi Tarkoitus ("com.broadcast.set.broadcast");
    sendBroadcast (lähetys, nolla);
    }
    jotta
    });
    }
    jotta
    }


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

        <sovellus
            android: allowBackup = "true"
            android: icon = "@ drawable / ic_launcher"
            android: label = "@ merkkijono / sovelluksen_nimi"
            android: theme = "@ style / AppTheme">
            <toiminta
                android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
                android: label = "@ merkkijono / sovelluksen_nimi">
               
                   
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
       

    Älä välitä toisesta sisällöstä toistaiseksi, josta puhumme myöhemmin, tässä keskitymme vain staattisten lähetysten rekisteröintiin


          
               
                   
               
           


    Katsotaanpa lähetyksen vastaanotinta:

    paketti com.broadcast.receiver;

    tuonti android.content.BroadcastReceiver;
    tuo android.content.Context;
    tuonti android.content.Intent;
    tuonti android.util.Log;

    / **
     * Lähetinvastaanotin
     * @tekijä weijiang204321
     *
     */
    public class UnSortBroadcastReceiver laajentaa BroadcastReceiver {

    @Ohittaa
    public void onReceive (kontekstikonteksti, tarkoituksellinen tarkoitus) {
    Loki.e ("Intent_Action:", intent.getAction () + "");
    }

    }
    Lähetysvastaanottimen onReceive-menetelmän logiikka on hyvin yksinkertainen, eli toiminnon sisällön tulostaminen.
    Suorita ohjelma, tulos on hyvin yksinkertainen, tässä ei ole kuvaa.

     

    Katsotaanpa dynaamisia tilauksia:


    paketti com.broadcast.demo;

    tuoda android.app.Activity;
    tuonti android.content.Intent;
    tuonti android.content.IntentFilter;
    tuonti android.os.Bundle;
    tuoda android.view.View;
    tuo android.view.View.OnClickListener;
    tuonti android.widget.Button;

    tuo com.broadcast.receiver.UnSortBroadcastReceiver;
    tuo com.example.androidbroadcastdemo.R;

    / **
     * Käytä dynaamista tapaa rekisteröidä lähetys
     * @tekijä weijiang204321
     *
     */
    julkinen luokka DynamicRegisterBroadcastActivity laajentaa toimintaa {
    jotta
    julkinen staattinen lopullinen merkkijono NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
    suojattu UnSortBroadcastReceiver-vastaanotin;
    jotta
    @Ohittaa
    suojattu void onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Button btn0 = (Button) findViewById (R.id.btn);
    btn0.setOnClickListener (uusi OnClickListener () {
    public void onClick (Näytä v) {
    // Lähetä lähetys
    Tarkoitus se = uusi Tarkoitus (NEW_LIFEFORM_DETECTED);
    sendBroadcast (se);
    }
    });
    }

    @Ohittaa
    suojattu void onResume () {
    super.onResume ();
    // Rekisteröidy lähetykseen
    IntentFilter counterActionFilter = uusi IntentFilter (NEW_LIFEFORM_DETECTED);
    vastaanotin = uusi UnSortBroadcastReceiver ();
    registerReceiver (vastaanotin, counterActionFilter);
    }

    @Ohittaa
    suojattu void onPause () {
    super.onPause ();
    // Peruuta lähetys
    unregisterReceiver (vastaanotin);
    }
    }
    Täällä olemme tilaamassa lähetyksiä onResume-palvelussa ja lopettaneet lähetysten tilaamisen onPause-palvelussa.
    Vaihda käynnistetty aktiviteetti asetukseksi DynamicRegisterBroadcastActivity AndroidMainfest.xml-tiedostossa. Muuta sisältöä ei tarvitse muuttaa. Suorita ohjelma ja tulosta tulos on hyvin yksinkertainen, joten en näe kuvaa täällä.

     

    Katsotaanpa tilattu lähetys ja tilaamaton lähetys

    Olemme jo maininneet tämän alussa, katsotaanpa häiriötöntä lähetystä:

    Ensin määritellään kaksi lähetysvastaanotinta:

    Ensimmäinen lähetysvastaanotin:


    paketti com.broadcast.receiver;

    tuonti android.content.BroadcastReceiver;
    tuo android.content.Context;
    tuonti android.content.Intent;
    tuonti android.util.Log;

    / **
     * Lähetinvastaanotin A
     * @tekijä weijiang204321
     *
     */
    public class SortBroadcastReceiverA laajentaa BroadcastReceiver {

    @Ohittaa
    public void onReceive (kontekstikonteksti, tarkoituksellinen tarkoitus) {
    Log.e ("Demo:", "lähetysvastaanotin A");
    }

    }
    Toinen lähetysvastaanotin:

    paketti com.broadcast.receiver;

    tuonti android.content.BroadcastReceiver;
    tuo android.content.Context;
    tuonti android.content.Intent;
    tuonti android.util.Log;

    / **
     * Lähetinvastaanotin B
     * @tekijä weijiang204321
     *
     */
    public class SortBroadcastReceiverB laajentaa BroadcastReceiver {

    @Ohittaa
    public void onReceive (kontekstikonteksti, tarkoituksellinen tarkoitus) {
    Log.e ("Demo:", "Lähetys B");
    }

    jotta
    jotta
    }


    Tilaa lähetys AndroidMainfest.xml-palvelussa


     
               
                   
               

           

               
                   
               

    toiminnan tulos:


    Juoksutulos on vähän outo. Miksi vastaanotin B on edessä ja vastaanotin A takana? Syynä on, että kun tilaamme lähetyksen AndroidMainfest.xml -ohjelmassa, asetamme android: prioriteetti -määritteen arvon aikomussuodattimeen. Mitä suurempi arvo, sitä korkeampi prioriteetti. , Vastaanottimen B prioriteetti on 1000, vastaanottimen A prioriteetti on 999, joten B vastaanottaa lähetyksen ensin ja sitten A vastaanottaa sen, mutta vastaanottimen B ja vastaanottimen A välillä ei ole yhteyttä, eikä vuorovaikutusta voi olla Kyllä, koska tämä on järjestyksessä oleva lähetys ja asynkroninen, voimme tehdä kokeilun lisäämällä koodin onReceiver-menetelmään kohdassa B:

    abortBroadcast (); // Lopeta tämän lähetyksen lähetys

    toiminnan tulos:

     

    Näemme nopean virheen, toisin sanoen tilaamaton lähetys ei saa lopettaa lähetystä. Itse asiassa irtisanominen on hyödytöntä, koska vastaanotin A edelleen vastaanottaa lähetyksen.

     

    Katsotaanpa järjestetty lähetys, koodia on muutettava:

    Ensimmäinen on lähetys:


    Tarkoituslähetys = uusi Tarkoitus ("com.broadcast.set.broadcast");
    sendOrderedBroadcast (lähetys, nolla);
    Lisää sitten tapa lopettaa lähetys B-vastaanottimessa:
    keskeytäLähetys ();

    Toista koodia ei tarvitse muuttaa, toiminnan tulos:

     

    On vain vastaanotin B, vastaanotin A ei vastaanota lähetystä, koska lähetys lopetetaan vastaanottimessa B, eivätkä seuraavat vastaanottimet voi hyväksyä sitä.

    Muokkaa alla olevaa koodia:

    Vastaanottaja B:


    paketti com.broadcast.receiver;

    tuonti android.content.BroadcastReceiver;
    tuo android.content.Context;
    tuonti android.content.Intent;
    tuonti android.os.Bundle;
    tuonti android.util.Log;

    / **
     * Lähetinvastaanotin B
     * @tekijä weijiang204321
     *
     */
    public class SortBroadcastReceiverB laajentaa BroadcastReceiver {

    @Ohittaa
    public void onReceive (kontekstikonteksti, tarkoituksellinen tarkoitus) {
    Log.e ("Demo:", "yleislähetysvastaanotin B");
    Bundle-paketti = uusi Bundle ();
    bundle.putString ("seuraava_vastaanotin", "seuraava lähetysvastaanotin");
    setResultExtras (paketti);
    }
    jotta
    }
    Kun B on vastaanottanut lähetyksen, se tallentaa jonkin verran arvoa ja välittää sen seuraavalle vastaanottimelle.


    Vastaanottimen A koodi:


    paketti com.broadcast.receive

     

     

     

     

    Listaa kaikki Kysymys

    Lempinimi

    Sähköposti

    kysymykset

    Meidän muiden tuotteiden:

    Ammattimainen FM-radioasemalaitepaketti

     



     

    Hotelli IPTV-ratkaisu

     


      Kirjoita sähköpostiosoite saadaksesi yllätyksen

      fmuser.org

      es.fmuser.org
      it.fmuser.org
      fr.fmuser.org
      de.fmuser.org
      af.fmuser.org -> Afrikaans
      sq.fmuser.org -> albania
      ar.fmuser.org -> arabia
      hy.fmuser.org -> Armenian
      az.fmuser.org -> azerbaidžanilainen
      eu.fmuser.org -> baski
      be.fmuser.org -> valkovenäläinen
      bg.fmuser.org -> Bulgaria
      ca.fmuser.org -> katalaani
      zh-CN.fmuser.org -> kiina (yksinkertaistettu)
      zh-TW.fmuser.org -> Kiina (perinteinen)
      hr.fmuser.org -> kroatia
      cs.fmuser.org -> tšekki
      da.fmuser.org -> tanska
      nl.fmuser.org -> Dutch
      et.fmuser.org -> viro
      tl.fmuser.org -> filippiiniläinen
      fi.fmuser.org -> suomi
      fr.fmuser.org -> French
      gl.fmuser.org -> galicialainen
      ka.fmuser.org -> Georgian
      de.fmuser.org -> saksa
      el.fmuser.org -> Greek
      ht.fmuser.org -> Haitin kreoli
      iw.fmuser.org -> heprea
      hi.fmuser.org -> Hindi
      hu.fmuser.org -> Unkari
      is.fmuser.org -> islanti
      id.fmuser.org -> indonesia
      ga.fmuser.org -> irlantilainen
      it.fmuser.org -> Italian
      ja.fmuser.org -> japani
      ko.fmuser.org -> korea
      lv.fmuser.org -> latvia
      lt.fmuser.org -> Liettua
      mk.fmuser.org -> makedonia
      ms.fmuser.org -> malaiji
      mt.fmuser.org -> maltalainen
      no.fmuser.org -> Norja
      fa.fmuser.org -> persia
      pl.fmuser.org -> puola
      pt.fmuser.org -> portugali
      ro.fmuser.org -> Romania
      ru.fmuser.org -> venäjä
      sr.fmuser.org -> serbia
      sk.fmuser.org -> slovakki
      sl.fmuser.org -> Slovenian
      es.fmuser.org -> espanja
      sw.fmuser.org -> swahili
      sv.fmuser.org -> ruotsi
      th.fmuser.org -> Thai
      tr.fmuser.org -> turkki
      uk.fmuser.org -> ukraina
      ur.fmuser.org -> urdu
      vi.fmuser.org -> Vietnam
      cy.fmuser.org -> kymri
      yi.fmuser.org -> Jiddiš

       
  •  

    FMUSER Wirless lähettää videota ja ääntä helpommin!

  • Ota yhteyttä

    Osoite:
    Nro 305 huone HuiLan-rakennus nro 273 Huanpu Road Guangzhou Kiina 510620

    Sähköposti:
    [sähköposti suojattu]

    Puh / WhatApps:
    + 8618078869184

  • Kategoriat

  • Uutiskirje

    ENSIMMÄINEN TAI KOKO NIMI

    E-mail

  • paypal ratkaisu  Western UnionBank of China
    Sähköposti:[sähköposti suojattu]   WhatsApp: +8618078869184 Skype: sky198710021 Juttele minun kanssani
    Copyright 2006-2020 Powered By www.fmuser.org

    Ota yhteyttä