FMUSER bežični prijenos videa i zvuka lakše!

[e-pošta zaštićena] WhatsApp +8618078869184
Jezik

    Detaljno objašnjenje emitiranja u Androidu

     

    Emitiranje se dijeli na dvije različite vrste: "Uobičajena emitiranja" i "Naručena emitiranja". Uobičajena emisija potpuno je asinkrona i mogu je istovremeno primiti svi prijemnici emitiranja (logično). Učinkovitost isporuke poruka je relativno visoka, ali nedostatak je što prijamnik ne može proslijediti rezultat obrade sljedećem primatelju i ne može se prekinuti. Širenje namjere širenja; međutim, poredano emitiranje temelji se na prioritetu koji je prijavio prijamnik (deklariran u android: attribute priority elementa filtra namjere, što je veći broj, veći je prioritet, raspon vrijednosti: -1000 do 1000. moguće Pozovite setPriority () objekta IntentFilter koji želite postaviti), a primatelj redom prima emitiranje. Na primjer, ako je razina A viša od razine B, a razina B viša od C, tada se emitiranje prvo prenosi u A, zatim u B i na kraju u C. Nakon što A dobije emitiranje, može pohraniti podatke u emisiji. Kada se emitiranje pošalje na B, B može dobiti podatke koje je A pohranio iz emitiranja.

     

    Context.sendBroadcast ()

       Poslano je obično emitiranje i svi pretplatnici imaju priliku to dobiti i obraditi.

     

    Context.sendOrderedBroadcast ()

       Slanje je uredno emitiranje. Sustav će izvršavati prijamnike jedan po jedan u skladu s prioritetom koji je prijamnik prijavio. Prethodni prijamnik ima pravo prekinuti emitiranje (BroadcastReceiver.abortBroadcast ()). Ako emitiranje prekine prethodni prijamnik, potonji prijemnik više ne može primati emitiranje. Za naručeno emitiranje, prethodni prijamnik može pohraniti rezultat obrade u namjeru emitiranja, a zatim ga proslijediti sljedećem prijemniku.

     
    Prijenosni prijamnik (BroadcastReceiver) koristi se za primanje emitirane namjere, a slanje emitirane namjere ostvaruje se pozivanjem Context.sendBroadcast () i Context.sendOrderedBroadcast (). Obično emitiranu namjeru može primiti više prijemnih emitera koji su pretplaćeni na ovu namjeru. Ova je značajka slična prijemnicima poruka Topic u JMS-u. Primjena metode prijemnika emitiranja je sljedeća:

     

    Prvi korak: definirajte emitirani prijamnik, naslijedite BroadcastReceiver i prepišite metodu onReceive ().

    javna klasa IncomingSMSReceiver extendsBroadcastReceiver {
      @Override public void onReceive (Contextcontext, Intentintent) {
      }
    }

     

    Korak 2: Pretplatite se na emitiranje Namjera interesa, postoje dvije metode pretplate:

    Prva vrsta: upotrijebite kod za pretplatu (dinamička pretplata)

    IntentFilter filter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
    IncomingSMSReceiver receiver = newIncomingSMSReceiver ();
    registerReceiver (prijamnik, filter);

     

    Druga vrsta: Pretplatite se na čvor u datoteci AndroidManifest.xml (statička pretplata)


      
           
      


    Pogledajmo razliku između pretplate na dinamičko emitiranje i pretplate na statičko emitiranje:
    Statičko emitiranje pretplate naziva se i: rezidentno emitiranje. Kada je vaša aplikacija zatvorena, ako postoji emitirana poruka, i prijemnik za emitiranje koji ste napisali može je primiti. Njegova metoda registracije je AndroidManifast u vašoj aplikaciji. .xml za pretplatu.

     

    Dinamičko emitiranje pretplate naziva se i: nerezidentno emitiranje. Kad aplikacija završi, emitiranje će prirodno nestati. Na primjer, pretplatili ste se na emitiranje u onCreate ili onResume u aktivnosti, a pretplatu na emitiranje morate otkazati u onDestory ili onPause. U suprotnom, izvijestit će se o izuzeću, tako da vaš prijemnik neće biti rezident.

     

    Ovdje postoji još jedan detalj, a to su dvije metode pretplate. Prilikom slanja emisija, morate obratiti pažnju na: Metoda implicitne namjere koristi se za dinamičku registraciju, tako da prilikom slanja emisija morate koristiti implicitnu namjeru. , Inače prijemnik emitiranja neće moći primiti emitiranje. Obratite pažnju na ovu točku. Ali kada se pretplatite statički, jer je pretplaćen na AndroidMainfest.xml, moguće je koristiti display Intent i implicitnu namjeru prilikom slanja emisija (naravno, ovo je samo za prijemnike emitiranja koje smo sami definirali), pa za svaki slučaj obično koristimo implicitne Namjera slanja emitiranja.

     

    Pogledajmo primjer:

    Pogledajte strukturu projekta:

     

    Pogledajte statično emitiranje pretplate:
    paket com.broadcast.demo;

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

    uvoz com.example.androidbroadcastdemo.R;

    / **
     * Statično emitiranje pretplate
     * @autor weijiang204321
     *
     */
    javna klasa StaticRegisterBroadcastActivity proširuje aktivnost {

    @Preuzmi
    zaštićena praznina onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Gumb btn = (Gumb) findViewById (R.id.btn);
    Do
    btn.setOnClickListener (novi OnClickListener () {
    @Preuzmi
    javna praznina onClick (Prikaz v) {
    // Upotrijebite statični način za prijavu emitiranja, a namjeru zaslona možete koristiti za slanje emitiranja
    Emitiranje namjere = nova namjera ("com.broadcast.set.broadcast");
    sendBroadcast (emitiranje, null);
    }
    Do
    });
    }
    Do
    }


    Pretplatite se na AndroidMainfest.xml:



    <manifest xmlns:android="
    http://schemas.android.com/apk/res/android"
        paket = "com.example.androidbroadcastdemo"
        android: versionCode = "1"
        android: versionName = "1.0">

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

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

    Za sada ne brinite o ostalim sadržajima, o čemu ćemo razgovarati kasnije, ovdje se fokusiramo samo na registraciju statičnih emisija


          
               
                   
               
           


    Pogledajmo prijemnik emisije:

    paket com.broadcast.receiver;

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

    / **
     * Prijenosni prijemnik
     * @autor weijiang204321
     *
     */
    javna klasa UnSortBroadcastReceiver proširuje BroadcastReceiver {

    @Preuzmi
    javna praznina onReceive (kontekst konteksta, namjera namjere) {
    Log.e ("Intent_Action:", intent.getAction () + "");
    }

    }
    Logika metode onReceive u emitiranom prijamniku vrlo je jednostavna, a to je ispis sadržaja akcije.
    Pokrenite program, rezultat je vrlo jednostavan, ovdje nije slika.

     

    Pogledajmo dinamičke pretplate:


    paket com.broadcast.demo;

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

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

    / **
     * Upotrijebite dinamični način za registraciju emitiranja
     * @autor weijiang204321
     *
     */
    javna klasa DynamicRegisterBroadcastActivity proširuje aktivnost {
    Do
    javni statički završni niz NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
    zaštićeni prijemnik UnSortBroadcastReceiver;
    Do
    @Preuzmi
    zaštićena praznina onCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Gumb btn0 = (Gumb) findViewById (R.id.btn);
    btn0.setOnClickListener (novi OnClickListener () {
    javna praznina onClick (Prikaz v) {
    // Pošaljite emitiranje
    Namjera it = nova namjera (NEW_LIFEFORM_DETECTED);
    sendBroadcast (it);
    }
    });
    }

    @Preuzmi
    zaštićena praznina onResume () {
    super.onResume ();
    // Registriraj se za emitiranje
    IntentFilter counterActionFilter = novi IntentFilter (NEW_LIFEFORM_DETECTED);
    prijemnik = novi UnSortBroadcastReceiver ();
    registerReceiver (prijamnik, counterActionFilter);
    }

    @Preuzmi
    zaštićena praznina onPause () {
    super.onPause ();
    // Otkaži emitiranje
    odjavitiPrimnik (prijamnik);
    }
    }
    Ovdje se pretplaćujemo na emitiranje u onResume, a odjavljujemo se na emitiranje u onPause.
    Promijenite pokrenutu Aktivnost u DynamicRegisterBroadcastActivity u AndroidMainfest.xml. Ostali sadržaj nije potrebno mijenjati. Pokrenite program i ispišite rezultat vrlo je jednostavno, tako da ovdje neću vidjeti sliku.

     

    Pogledajmo uređeno emitiranje i neuređeno emitiranje

    To smo već spomenuli na početku, pogledajmo neuredno emitiranje:

    Prvo definiramo dva emitirana prijamnika:

    Prvi emitirani prijamnik:


    paket com.broadcast.receiver;

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

    / **
     * Prijenosni prijemnik A
     * @autor weijiang204321
     *
     */
    javna klasa SortBroadcastReceiverA proširuje BroadcastReceiver {

    @Preuzmi
    javna praznina onReceive (kontekst konteksta, namjera namjere) {
    Log.e ("Demo:", "emitirani prijamnik A");
    }

    }
    Drugi emitirani prijamnik:

    paket com.broadcast.receiver;

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

    / **
     * Prijenosni prijamnik B
     * @autor weijiang204321
     *
     */
    javna klasa SortBroadcastReceiverB proširuje BroadcastReceiver {

    @Preuzmi
    javna praznina onReceive (kontekst konteksta, namjera namjere) {
    Log.e ("Demo:", "Emitiranje B");
    }

    Do
    Do
    }


    Pretplatite se na emitiranje na AndroidMainfest.xml


     
               
                   
               

           

               
                   
               

    rezultat operacije:


    Rezultati trčanja su pomalo čudni. Zašto je prijemnik B sprijeda, a prijemnik A straga? Razlog je taj što kada se pretplatimo na emitiranje u AndroidMainfest.xml, postavimo vrijednost atributa android: priority u filtru namjere. Što je vrijednost veća, prioritet je veći. , Prioritet prijamnika B je 1000, prioritet prijemnika A je 999, pa B prvo prima emitiranje, a zatim ga prima A, ali nema veze između prijamnika B i prijemnika A i ne može biti interakcije Da, jer je ovo emitiranje izvan reda i asinkrono, možemo napraviti eksperiment dodavanjem koda metodi onReceiver u B:

    abortBroadcast (); // Prekini prijenos ovog emitiranja

    rezultat operacije:

     

    Vidimo brzu pogrešku, odnosno neuređeno emitiranje ne smije prekinuti emitiranje. Zapravo je završetak beskoristan, jer prijemnik A i dalje prima emitiranje.

     

    Pogledajmo uredno emitiranje, kod je potrebno izmijeniti:

    Prvo je kod slanja emisije:


    Emitiranje namjere = nova namjera ("com.broadcast.set.broadcast");
    sendOrderedBroadcast (emitiranje, null);
    Zatim dodajte metodu za prekid emitiranja u B prijamniku:
    abortBroadcast ();

    Drugi kôd ne treba mijenjati, rezultat operacije:

     

    Postoji samo prijemnik B, prijemnik A ne prima emitiranje, jer je emitiranje završeno u prijemniku B, a sljedeći prijemnici ga ne mogu prihvatiti.

    Izmijenite donji kod:

    Primatelj B:


    paket com.broadcast.receiver;

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

    / **
     * Prijenosni prijamnik B
     * @autor weijiang204321
     *
     */
    javna klasa SortBroadcastReceiverB proširuje BroadcastReceiver {

    @Preuzmi
    javna praznina onReceive (kontekst konteksta, namjera namjere) {
    Log.e ("Demo:", "emitirani prijamnik B");
    Paket snopa = novi Bundle ();
    bundle.putString ("next_receiver", "next emisijski prijamnik");
    setResultExtras (snop);
    }
    Do
    }
    Nakon što B primi emitiranje, pohranjuje neku vrijednost i prosljeđuje je sljedećem prijemniku.


    Kôd prijemnika A:


    paket com.emitirati.primiti

     

     

     

     

    Popis svih pitanja

    Nadimak

    E-mail

    Pitanja

    Naš drugi proizvod:

    Paket opreme za profesionalne FM radio stanice

     



     

    Hotelsko IPTV rješenje

     


      Unesite e-poštu da biste dobili iznenađenje

      fmuser.org

      es.fmuser.org
      it.fmuser.org
      fr.fmuser.org
      de.fmuser.org
      af.fmuser.org -> afrikaans
      sq.fmuser.org -> albanski
      ar.fmuser.org -> arapski
      hy.fmuser.org -> Armenski
      az.fmuser.org -> azerbejdžanski
      eu.fmuser.org -> baskijski
      be.fmuser.org -> bjeloruski
      bg.fmuser.org -> Bugarski
      ca.fmuser.org -> katalonski
      zh-CN.fmuser.org -> kineski (pojednostavljeni)
      zh-TW.fmuser.org -> Kineski (tradicionalni)
      hr.fmuser.org -> hrvatski
      cs.fmuser.org -> češki
      da.fmuser.org -> danski
      nl.fmuser.org -> Nizozemski
      et.fmuser.org -> estonski
      tl.fmuser.org -> filipinski
      fi.fmuser.org -> finski
      fr.fmuser.org -> Francuski
      gl.fmuser.org -> galicijski
      ka.fmuser.org -> gruzijski
      de.fmuser.org -> njemački
      el.fmuser.org -> Grčki
      ht.fmuser.org -> haićanski kreolski
      iw.fmuser.org -> hebrejski
      hi.fmuser.org -> hindski
      hu.fmuser.org -> Mađarski
      is.fmuser.org -> islandski
      id.fmuser.org -> indonezijski
      ga.fmuser.org -> irski
      it.fmuser.org -> Talijanski
      ja.fmuser.org -> japanski
      ko.fmuser.org -> korejski
      lv.fmuser.org -> latvijski
      lt.fmuser.org -> Litvanski
      mk.fmuser.org -> makedonski
      ms.fmuser.org -> malajski
      mt.fmuser.org -> malteški
      no.fmuser.org -> Norveška
      fa.fmuser.org -> perzijski
      pl.fmuser.org -> poljski
      pt.fmuser.org -> portugalski
      ro.fmuser.org -> Rumunjski
      ru.fmuser.org -> ruski
      sr.fmuser.org -> srpski
      sk.fmuser.org -> slovački
      sl.fmuser.org -> Slovenski
      es.fmuser.org -> španjolski
      sw.fmuser.org -> svahili
      sv.fmuser.org -> švedski
      th.fmuser.org -> Tajlandski
      tr.fmuser.org -> turski
      uk.fmuser.org -> ukrajinski
      ur.fmuser.org -> urdu
      vi.fmuser.org -> Vijetnamski
      cy.fmuser.org -> velški
      yi.fmuser.org -> Jidiš

       
  •  

    FMUSER bežični prijenos videa i zvuka lakše!

  • Kontakt

    Adresa:
    Br. 305 Soba HuiLan zgrada br. 273 Huanpu Road Guangzhou Kina 510620

    E-mail:
    [e-pošta zaštićena]

    Tel/WhatApps:
    + 8618078869184

  • Kategorije

  • Novosti

    IME I IME

    E-mail

  • PayPal rješenje  Zapadna unijaBank of China
    E-mail:[e-pošta zaštićena]   WhatsApp: +8618078869184 Skype: sky198710021 Pričaj sa mnom
    Copyright 2006-2020 Powered by www.fmuser.org

    Kontaktirajte Nas