FMUSER Transferoni pa video dhe audio video dhe audio më lehtë!

[email mbrojtur] WhatsApp + 8618078869184
Gjuhe

    Shpjegim i hollësishëm i Transmetimit në Android

     

    Transmetimet ndahen në dy lloje të ndryshme: "Transmetime normale" dhe "Transmetime të porositura". Transmetimi i zakonshëm është plotësisht asinkron dhe mund të merret nga të gjithë marrësit e transmetimit në të njëjtën kohë (logjikisht). Efikasiteti i dërgimit të mesazheve është relativisht i lartë, por disavantazhi është se marrësi nuk mund të kalojë rezultatin e përpunimit te marrësit tjetër dhe ai nuk mund të përfundojë. Transmetimi Përhapja e qëllimit; sidoqoftë, transmetimi i porositur bazohet në përparësinë e deklaruar nga marrësi (deklaruar në android: atributi i përparësisë së elementit filtër qëllimi, sa më i madh të jetë numri, aq më i lartë është përparësia, diapazoni i vlerës: -1000 deri në 1000. alsoshtë gjithashtu e mundur Thirrni setPriority () të objektit IntentFilter për të vendosur), dhe marrësi merr transmetimin me radhë. Për shembull, nëse niveli i A është më i lartë se ai i B, dhe niveli i B është më i lartë se C, atëherë transmetimi transmetohet fillimisht në A, pastaj në B, dhe në fund në C. Pasi A merr transmetimin, ai mund të ruajë të dhëna në transmetim. Kur transmetimi dërgohet në B, B mund të marrë të dhënat e ruajtura nga A nga transmetimi.

     

    Context.sendBroadcast ()

       Ajo që dërgohet është një transmetim i zakonshëm, dhe të gjithë pajtimtarët kanë mundësinë ta marrin dhe përpunojnë atë.

     

    Context.sendOrowedBroadcast ()

       Dërgimi është një transmetim i rregullt. Sistemi do të ekzekutojë marrësit një nga një në përputhje me përparësinë e deklaruar nga marrësi. Marrësi i mëparshëm ka të drejtë të ndërpresë transmetimin (BroadcastReceiver.abortBroadcast ()). Nëse transmetimi ndërpritet nga marrësi i mëparshëm, ky i fundit Marrësi nuk mund të marrë më transmetimin. Për transmetimin e porositur, marrësi i mëparshëm mund të ruajë rezultatin e përpunimit në qëllimin e transmetimit, dhe pastaj t'ia kalojë marrësit tjetër.

     
    Marrësi i transmetimit (BroadcastReceiver) përdoret për të marrë Intentin e transmetimit, dhe dërgimi i transmetimit Intent realizohet duke thirrur Context.sendBroadcast () dhe Context.sendOruledBroadcast (). Zakonisht një Synim i transmetimit mund të merret nga marrës të shumtë të transmetimit të pajtuar në këtë Synim. Kjo karakteristikë është e ngjashme me marrësit e mesazheve Tema në JMS. Për të zbatuar një metodë të marrësit të transmetimit është si më poshtë:

     

    Hapi i parë: përcaktoni marrësin e transmetimit, trashëgoni BroadcastReceiver dhe rishkruani metodën onReceive ().

    Marrësi i ardhshëmSMSS i klasës publike shtrihetTransmetuesi Marrësi {
      @ Mbikëqyr boshllëkun publik nëReceive (Contextcontext, Qëllimi) {
      }
    }

     

    Hapi 2: Abonohuni në transmetim Qëllimi i interesit, ekzistojnë dy metoda të pajtimit:

    Lloji i parë: përdorni kodin për t'u pajtuar (pajtim dinamik)

    Filtri IntentFilter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
    Marrësi IncomingSMSReceiver = newInomingSMSReceiver ();
    regjistri Marrësi (marrësi, filtri);

     

    Lloji i dytë: Regjistrohuni në nyja në skedarin AndroidManifest.xml (pajtim statik)


      
           
      


    Le të hedhim një vështrim në ndryshimin midis abonimit të transmetimit dinamik dhe abonimit të transmetimit statik:
    Transmetimi statik i pajtimit quhet ndryshe: transmetim rezident. Kur aplikacioni juaj është i mbyllur, nëse ka një mesazh transmetimi, marrësi i transmetimit që keni shkruar gjithashtu mund ta marrë atë. Metoda e tij e regjistrimit është AndroidManifast në aplikacionin tuaj. .xml për pajtim.

     

    Transmetimi dinamik i pajtimit quhet ndryshe: transmetim jorezident. Kur të përfundojë aplikimi, transmetimi natyrshëm do të zhduket. Për shembull, ju regjistroheni në transmetim në Krijoni ose Rifilloni në aktivitet dhe duhet të anuloni pajtimin në transmetim nëDestory ose nëPause. Përndryshe, një përjashtim do të raportohet, kështu që marrësi juaj i transmetimit do të jetë një jorezident.

     

    Këtu ka edhe një detaj që është dy metodat e pajtimit. Kur dërgoni transmetime, duhet t'i kushtoni vëmendje: Metoda e nënkuptuar e nënkuptuar përdoret për regjistrim dinamik, kështu që duhet të përdorni qëllim të nënkuptuar për të dërguar kur dërgoni transmetime. Përndryshe marrësi i transmetimit nuk do të jetë në gjendje të marrë transmetimin. Kushtojini vëmendje kësaj pike. Por kur regjistrohesh në mënyrë statike, sepse është i pajtuar në AndroidMainfest.xml, është e mundur të përdorësh Intentin e ekranit dhe Synimin e nënkuptuar gjatë dërgimit të transmetimeve (natyrisht kjo është vetëm për marrësit e transmetimit të përcaktuar nga vetë ne), kështu që për çdo rast, Ne zakonisht përdorim Qëllimi për të dërguar transmetim.

     

    Le të shohim një shembull:

    Shikoni strukturën e projektit:

     

    Shikoni transmetimin statik të pajtimit:
    paketa com.broadcast.demo;

    import android.app.Aktiviteti;
    import android.përmbajtja. Intent;
    importoni android.os.Bundle;
    importoni android.view.View;
    importoni android.view.View.OnClickListener;
    importoni android.widget.Button;

    importoni com.example.androidbroadcastdemo.R;

    / **
     * Transmetim statik i pajtimit
     * @autor autori weijiang204321
     *
     */
    klasa publike StaticRegisterBroadcastActivity shtrihet Aktiviteti {

    @ Mbikëqyrja
    boshllëk i mbrojtur onCreate (Paketa e ruajturInstanceState) {
    super.onCreate (i ruajturInstanceState);
    setContentView (R.layout.activity_main);
    Butoni btn = (Butoni) findViewById (R.id.btn);

    btn.setOnClickListener (OnClickListener i ri () {
    @ Mbikëqyrja
    boshllëk publik në Kliko (Shiko v) {
    // Përdorni një mënyrë statike për të regjistruar transmetimin, ju mund të përdorni qëllimin e shfaqjes për të dërguar transmetimin
    Transmetimi i synimit = Qëllimi i ri ("com.broadcast.set.broadcast");
    sendBroadcast (transmetim, null);
    }

    });
    }

    }


    Abonohuni në AndroidMainfest.xml:



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

        <përdor-sdk
            android: minSdkVersion = "8"
            android: targetSdkVersion = "18" />
       
       
       
       
       
       

        <aplikacion
            android: allowBackup = "e vërtetë"
            android: icon = "@ drawable / ic_launcher"
            android: label = "@ string / app_name"
            android: theme = "@ style / AppTheme">
            <aktivitet
                android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
                android: label = "@ string / app_name">
               
                   
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
       

    Mos u shqetësoni për përmbajtjen tjetër tani për tani, pasi do të flasim më vonë, këtu ne përqendrohemi vetëm në regjistrimin e transmetimeve statike


          
               
                   
               
           


    Le të hedhim një vështrim në marrësin e transmetimit:

    paketa com.broadcast.receiver;

    import android.content.BreadcastReceiver;
    importoni android.content.Context;
    import android.përmbajtja. Intent;
    importoni android.util.Log;

    / **
     * Marrësi i transmetimit
     * @autor autori weijiang204321
     *
     */
    Klasa publike UnSortBroadcastReceiver shtrihet BroadcastReceiver {

    @ Mbikëqyrja
    boshllëk publik mbi Marrja (Konteksti i kontekstit, Qëllimi i synimit) {
    Log.e ("Veprimi_ Qëllimi:", intent.getAction () + "");
    }

    }
    Logjika në metodën onReceive në marrësin e transmetimit është shumë e thjeshtë, e cila është shtypja e përmbajtjes së veprimit.
    Ekzekutoni programin, rezultati është shumë i thjeshtë, këtu nuk është fotografia.

     

    Le të hedhim një vështrim në pajtimet dinamike:


    paketa com.broadcast.demo;

    import android.app.Aktiviteti;
    import android.përmbajtja. Intent;
    importoni android.content.IntentFilter;
    importoni android.os.Bundle;
    importoni android.view.View;
    importoni android.view.View.OnClickListener;
    importoni android.widget.Button;

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

    / **
     * Përdorni mënyrë dinamike për të regjistruar transmetimin
     * @autor autori weijiang204321
     *
     */
    klasa publike DynamicRegisterBroadcastActivity shtrihet Aktiviteti {

    Vargu përfundimtar statik publik NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
    Marrësi i mbrojtur UnSortBroadcastReceiver;

    @ Mbikëqyrja
    boshllëk i mbrojtur onCreate (Paketa e ruajturInstanceState) {
    super.onCreate (i ruajturInstanceState);
    setContentView (R.layout.activity_main);
    Butoni btn0 = (Butoni) findViewById (R.id.btn);
    btn0.setOnClickListener (OnClickListener i ri () {
    boshllëk publik në Kliko (Shiko v) {
    // Dërgoni transmetimin
    Qëllimi it = Qëllimi i ri (NEW_LIFEFORM_DETECTED);
    sendBroadcast (it);
    }
    });
    }

    @ Mbikëqyrja
    boshllëk i mbrojtur nëResume () {
    super.onResume ();
    // Regjistrohuni për transmetim
    IntentFilter counterActionFilter = ri IntentFilter (NEW_LIFEFORM_DETECTED);
    marrësi = marrësi i ri i UnSortBroadcast ();
    regjistri Marrësi (marrësi, counterActionFilter);
    }

    @ Mbikëqyrja
    boshllëk i mbrojtur nëPause () {
    super.nëPauzë ();
    // Anuloni transmetimin
    çregjistrohu Marrësi (marrësi);
    }
    }
    Këtu ne po pajtohemi për transmetim nëResume, dhe çabonim për transmetim nëPause.
    Ndryshoni Aktivitetin e nisur në DynamicRegisterBroadcastActivity në AndroidMainfest.xml. Përmbajtja tjetër nuk ka nevojë të modifikohet. Drejtoni programin dhe printoni rezultati është shumë i thjeshtë, kështu që unë nuk do ta shoh foton këtu.

     

    Le të hedhim një vështrim në transmetimet e porositura dhe transmetimet e parenditura

    Ne tashmë e kemi përmendur këtë në fillim, le të hedhim një vështrim në transmetimet e çrregullta:

    Së pari ne përcaktojmë dy marrës transmetues:

    Marrësi i parë i transmetimit:


    paketa com.broadcast.receiver;

    import android.content.BreadcastReceiver;
    importoni android.content.Context;
    import android.përmbajtja. Intent;
    importoni android.util.Log;

    / **
     * Marrësi i transmetimit A
     * @autor autori weijiang204321
     *
     */
    Klasa publike SortBroadcastReceiverA zgjat BroadcastReceiver {

    @ Mbikëqyrja
    boshllëk publik mbi Marrja (Konteksti i kontekstit, Qëllimi i synimit) {
    Log.e ("Demo:", "marrësi i transmetimit A");
    }

    }
    Marrësi i dytë i transmetimit:

    paketa com.broadcast.receiver;

    import android.content.BreadcastReceiver;
    importoni android.content.Context;
    import android.përmbajtja. Intent;
    importoni android.util.Log;

    / **
     * Marrësi i transmetimit B
     * @autor autori weijiang204321
     *
     */
    Klasa publike SortBroadcastReceiverB shtrihet BroadcastReceiver {

    @ Mbikëqyrja
    boshllëk publik mbi Marrja (Konteksti i kontekstit, Qëllimi i synimit) {
    Log.e ("Demo:", "Transmetimi B");
    }



    }


    Abonohuni për të transmetuar në AndroidMainfest.xml


     
               
                   
               

           

               
                   
               

    rezultati i operimit:


    Rezultati i vrapimit është pak i çuditshëm. Pse është marrësi B në pjesën e përparme dhe marrësi A në pjesën e pasme? Arsyeja është se kur regjistrohemi në transmetim në AndroidMainfest.xml, ne vendosim vlerën e atributit android: prioritet në filtrin e synimit. Sa më e madhe të jetë vlera, aq më i lartë është përparësia. , Prioriteti i marrësit B është 1000, përparësia e marrësit A ​​është 999, kështu që B merr fillimisht transmetimin, dhe pastaj A e merr atë, por nuk ka asnjë lidhje midis marrësit B dhe marrësit A, dhe nuk mund të ketë ndërveprim Po, për shkak se ky është një transmetim jashtë rendit dhe asinkron, ne mund të bëjmë një eksperiment duke shtuar kod në metodën onReceiver në B:

    abortBroadcast (); // Përfundoni transmetimin e këtij transmetimi

    rezultati i operimit:

     

    Ne mund të shohim gabimin e shpejtë, domethënë transmetimi i pa porositur nuk lejohet të ndërpresë transmetimin. Në fakt, përfundimi është i padobishëm, sepse marrësi A ende merr transmetimin.

     

    Le të hedhim një vështrim në transmetimin e rregullt, kodi duhet të modifikohet:

    E para është kur dërgoni një transmetim:


    Transmetimi i synimit = Qëllimi i ri ("com.broadcast.set.broadcast");
    transmetoniOrdruarBroadcast (transmetuar, null);
    Pastaj shtoni një metodë për të përfunduar transmetimin në marrësin B:
    abortBroadcast ();

    Kodi tjetër nuk ka nevojë të modifikohet, rezultati i operacionit:

     

    Ekziston vetëm marrësi B, marrësi A nuk e merr transmetimin, sepse transmetimi përfundon në marrësin B, dhe marrësit pasues nuk mund ta pranojnë atë.

    Modifikoni kodin më poshtë:

    Përfituesi B:


    paketa com.broadcast.receiver;

    import android.content.BreadcastReceiver;
    importoni android.content.Context;
    import android.përmbajtja. Intent;
    importoni android.os.Bundle;
    importoni android.util.Log;

    / **
     * Marrësi i transmetimit B
     * @autor autori weijiang204321
     *
     */
    Klasa publike SortBroadcastReceiverB shtrihet BroadcastReceiver {

    @ Mbikëqyrja
    boshllëk publik mbi Marrja (Konteksti i kontekstit, Qëllimi i synimit) {
    Log.e ("Demo:", "marrësi i transmetimit B");
    Pako e Paketës = Pako e re ();
    bundle.putString ("marrësi tjetër_pranues", "marrësi tjetër i transmetimit");
    setResultExtras (pako);
    }

    }
    Pasi B merr transmetimin, ai ruan disa vlera dhe ia kalon marrësit tjetër.


    Kodi i marrësit A:


    paketa com.broadcast.receive

     

     

     

     

    Lista e të gjithë Pyetje

    Nickname

    Email

    pyetjet

    Produkti ynë të tjera:

    Paketa e pajisjeve profesionale të stacionit të radios FM

     



     

    Zgjidhje IPTV Hoteli

     


      Fut email për të marrë një surprizë

      fmuser.org

      es.fmuser.org
      it.fmuser.org
      fr.fmuser.org
      de.fmuser.org
      af.fmuser.org -> Afrikanisht
      sq.fmuser.org -> shqip
      ar.fmuser.org -> arabisht
      hy.fmuser.org -> Armenisht
      az.fmuser.org -> Azerbajxhanisht
      eu.fmuser.org -> Baskisht
      be.fmuser.org -> Bjellorusisht
      bg.fmuser.org -> Bullgarisht
      ca.fmuser.org -> katalanisht
      zh-CN.fmuser.org -> Kinezisht (e thjeshtuar)
      zh-TW.fmuser.org -> Kinezisht (Tradicionale)
      hr.fmuser.org -> Kroate
      cs.fmuser.org -> Çekisht
      da.fmuser.org -> daneze
      nl.fmuser.org -> Hollandisht
      et.fmuser.org -> Estonisht
      tl.fmuser.org -> Filipinase
      fi.fmuser.org -> finlandisht
      fr.fmuser.org -> Frëngjisht
      gl.fmuser.org -> Galike
      ka.fmuser.org -> gjeorgjian
      de.fmuser.org -> gjermanisht
      el.fmuser.org -> Greqisht
      ht.fmuser.org -> Kreolishtja Haitiane
      iw.fmuser.org -> Hebraisht
      hi.fmuser.org -> Hindisht
      hu.fmuser.org -> Hungarisht
      is.fmuser.org -> Islandez
      id.fmuser.org -> indonezisht
      ga.fmuser.org -> Irlandez
      it.fmuser.org -> Italisht
      ja.fmuser.org -> Japoneze
      ko.fmuser.org -> Koreane
      lv.fmuser.org -> Letonisht
      lt.fmuser.org -> Lituanisht
      mk.fmuser.org -> maqedonas
      ms.fmuser.org -> Malajzisht
      mt.fmuser.org -> Maltese
      no.fmuser.org -> Norvegjisht
      fa.fmuser.org -> persisht
      pl.fmuser.org -> polake
      pt.fmuser.org -> Portugeze
      ro.fmuser.org -> Rumanisht
      ru.fmuser.org -> Rusisht
      sr.fmuser.org -> serbisht
      sk.fmuser.org -> Sllovake
      sl.fmuser.org -> Sllovenisht
      es.fmuser.org -> Spanjisht
      sw.fmuser.org -> Suahilisht
      sv.fmuser.org -> suedisht
      th.fmuser.org -> Thai
      tr.fmuser.org -> turqisht
      uk.fmuser.org -> ukrainas
      ur.fmuser.org -> Urdu
      vi.fmuser.org -> Vietnamese
      cy.fmuser.org -> Uellsit
      yi.fmuser.org -> Yiddish

       
  •  

    FMUSER Transferoni pa video dhe audio video dhe audio më lehtë!

  • Kontakt

    Adresa:
    Nr.305 Dhoma Ndërtesa HuiLan Nr.273 Huanpu Road Guangzhou Kinë 510620

    E-mail:
    [email mbrojtur]

    Tel / WhatApps:
    +8618078869184

  • Kategoritë

  • Gazete

    EMRI I PAR OR APO I PLOT

    E-mail

  • paypal zgjidhje  Western UnionBanka e Kinës
    E-mail:[email mbrojtur]   WhatsApp: +8618078869184 Skype: sky198710021 Chat me mua
    Copyright 2006-2020 Powered By www.fmuser.org

    Kontaktoni