FMUSER Wirless Jittrażmetti Vidjo U Awdjo Aktar Faċli!

[protett bl-email] WhatsApp + 8618078869184
lingwa

    Spjegazzjoni dettaljata tax-Xandir fl-Android

     

    Ix-xandir huwa maqsum f'żewġ tipi differenti: "Xandiriet normali" u "Xandiriet ordnati". Ix-xandir ordinarju huwa kompletament asinkroniku u jista 'jiġi riċevut mir-riċevituri tax-xandir kollha fl-istess ħin (loġikament). L-effiċjenza tal-kunsinna tal-messaġġ hija relattivament għolja, iżda l-iżvantaġġ huwa li r-riċevitur ma jistax jgħaddi r-riżultat tal-ipproċessar lir-riċevitur li jmiss, u ma jistax jintemm. Propagazzjoni tal-Intenzjoni tax-Xandir; madankollu, ix-xandir ordnat huwa bbażat fuq il-prijorità ddikjarata mir-riċevitur (iddikjarata fl-android: attribut ta 'prijorità tal-element ta' filtru intenzjoni, iktar ma jkun kbir in-numru, iktar tkun għolja l-prijorità, il-firxa tal-valur: -1000 sa 1000. Huwa wkoll possibbli Sejjaħ is-setPriority () tal-oġġett IntentFilter biex tissettja), u r-riċevitur jirċievi x-xandira min-naħa tiegħu. Pereżempju, jekk il-livell ta 'A huwa ogħla minn dak ta' B, u l-livell ta 'B huwa ogħla minn C, allura x-xandira hija l-ewwel trasmessa lil A, imbagħad lil B, u finalment lil C. Wara li A tirċievi x-xandira, hija jista 'jaħżen id-dejta fix-xandira. Meta x-xandira tintbagħat lil B, B jista 'jikseb id-dejta maħżuna minn A mix-xandira.

     

    Context.sendBroadcast ()

       Dak li jintbagħat huwa xandira ordinarja, u l-abbonati kollha għandhom l-opportunità li jiksbuha u jipproċessawha.

     

    Context.sendOrderedBroadcast ()

       Li tibgħat hija xandira ordnata. Is-sistema se tesegwixxi r-riċevituri waħda waħda skond il-prijorità ddikjarata mir-riċevitur. Ir-riċevitur preċedenti għandu d-dritt li jtemm ix-xandira (BroadcastReceiver.abortBroadcast ()). Jekk ix-xandira tintemm mir-riċevitur preċedenti, dan tal-aħħar Ir-riċevitur ma jistax ikollu x-xandira. Għal xandir ordnat, ir-riċevitur preċedenti jista 'jaħżen ir-riżultat tal-ipproċessar fl-Intenzjoni tax-xandir, u mbagħad jgħaddih lir-riċevitur li jmiss.

     
    Ir-riċevitur tax-xandir (BroadcastReceiver) jintuża biex jirċievi l-Intenzjoni tax-xandir, u t-trażmissjoni tal-Intenzjoni tax-xandir issir billi ssejjaħ Context.sendBroadcast () u Context.sendOrderedBroadcast (). Normalment Intent tax-xandir jista 'jiġi riċevut minn riċevituri multipli tax-xandir sottoskritti għal din l-Intenzjoni. Din il-karatteristika hija simili għar-riċevituri tal-messaġġi Topic f'JMS. Biex timplimenta metodu ta 'riċevitur tax-xandir huwa kif ġej:

     

    L-ewwel pass: iddefinixxi r-riċevitur tax-xandir, tiret BroadcastReceiver, u tikteb mill-ġdid il-metodu onReceive ().

    klassi pubblika IncomingSMSReceiver testendsBroadcastReceiver {
      @Override public void onReceive (Contextcontext, Intentintent) {
      }
    }

     

    Pass 2: Abbona għax-xandira Intenzjoni ta 'interess, hemm żewġ metodi ta' abbonament:

    L-ewwel tip: uża kodiċi biex tabbona (abbonament dinamiku)

    Filtru IntentFilter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
    Riċevitur IncomingSMSReceiver = newIncomingSMSReceiver ();
    registerReceiver (riċevitur, filtru);

     

    It - tieni tip: Abbona fil - nodu fil-fajl AndroidManifest.xml (abbonament statiku)


      
           
      


    Ejja nagħtu ħarsa lejn id-differenza bejn abbonament ta 'xandir dinamiku u abbonament ta' xandir statiku:
    Xandira ta 'abbonament statiku tissejjaħ ukoll: xandira residenti. Meta l-applikazzjoni tiegħek tkun magħluqa, jekk ikun hemm messaġġ imxandar, ir-riċevitur tax-xandir li ktibt jista 'wkoll jirċevih. Il-metodu ta 'reġistrazzjoni tiegħu huwa AndroidManifast fl-applikazzjoni tiegħek. .xml għall-abbonament.

     

    Xandir ta 'abbonament dinamiku jissejjaħ ukoll: xandir mhux residenti. Meta tispiċċa l-applikazzjoni, ix-xandira naturalment tisparixxi. Pereżempju, inti tissottoskrivi għax-xandira fuq onCreate jew onResume fl-attività, u trid tikkanċella l-abbonament tax-xandir fuq onDestory jew onPause. Inkella, tiġi rrappurtata eċċezzjoni, allura r-riċevitur tax-xandir tiegħek ma jkunx residenti.

     

    Hemm dettall ieħor hawnhekk li huma ż-żewġ metodi ta 'abbonament. Meta tibgħat xandiriet, trid toqgħod attent għal: Il-metodu ta 'intenzjoni impliċita jintuża għal reġistrazzjoni dinamika, allura għandek tuża intenzjoni impliċita biex tibgħat meta tibgħat xandiriet. , Inkella r-riċevitur tax-xandir ma jkunx jista 'jirċievi x-xandira. Oqgħod attent għal dan il-punt. Iżda meta tissottoskrivi b'mod statiku, minħabba li huwa sottoskritt f'AndroidMainfest.xml, huwa possibbli li tuża l-intenzjoni tal-wiri u l-Intenzjoni impliċita meta tibgħat xandiriet (naturalment dan huwa biss għar-riċevituri tax-xandir definiti minnna nfusna), għalhekk fil-każ, Aħna ġeneralment nużaw impliċiti Intenzjoni li tibgħat ix-xandira.

     

    Ejja nħarsu lejn eżempju:

    Agħti ħarsa lejn l-istruttura tal-proġett:

     

    Agħti ħarsa lejn ix-xandir ta 'abbonament statiku:
    pakkett com.broadcast.demo;

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

    importazzjoni com.example.androidbroadcastdemo.R;

    / **
     * Xandir ta 'abbonament statiku
     * @ awtur weijiang204321
     *
     */
    klassi pubblika StaticRegisterBroadcastActivity testends Activity {

    @ Override
    vojt protett fuqCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Buttuna btn = (Buttuna) findViewById (R.id.btn);
    Lil
    btn.setOnClickListener (OnClickListener ġdid () {
    @ Override
    vojt pubbliku fuq Ikklikkja (Ara v) {
    // Uża mod statiku biex tirreġistra x-xandira, tista 'tuża l-intenzjoni tal-wiri biex tibgħat ix-xandira
    Xandir ta 'intenzjoni = Intenzjoni ġdida ("com.broadcast.set.broadcast");
    sendBroadcast (imxandar, null);
    }
    Lil
    });
    }
    Lil
    }


    Abbona f'AndroidMainfest.xml:



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

        <użi-sdk
            android: minSdkVersion = "8"
            android: targetSdkVersion = "18" />
       
       
       
       
       
       

        <applikazzjoni
            android: allowBackup = "veru"
            android: icon = "@ drawable / ic_launcher"
            android: label = "@ string / app_name"
            android: theme = "@ style / AppTheme">
            <attività
                android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
                android: label = "@ string / app_name">
               
                   
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
           
           
               
                   
               
           
           
           
           
           
               
                   
               
           
           
       

    Tinkwetax dwar il-kontenut l-ieħor għalissa, kif ser nitkellmu dwaru aktar 'il quddiem, hawn aħna niffokaw biss fuq ir-reġistrazzjoni ta' xandiriet statiċi


          
               
                   
               
           


    Ejja nagħtu ħarsa lejn ir-riċevitur tax-xandira:

    pakkett com.broadcast.receiver;

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

    / **
     * Riċevitur tax-xandir
     * @ awtur weijiang204321
     *
     */
    klassi pubblika UnSortBroadcastReceiver testends BroadcastReceiver {

    @ Override
    vojt pubbliku fuq Irċievi (Kuntest tal-Kuntest, Intenzjoni intenzjonata) {
    Log.e ("Intent_Action:", intent.getAction () + "");
    }

    }
    Il-loġika fil-metodu onReceive fir-riċevitur tax-xandir hija sempliċi ħafna, li hija li tipprintja l-kontenut tal-Azzjoni.
    Mexxi l-programm, ir-riżultat huwa sempliċi ħafna, hawn mhix l-istampa.

     

    Ejja nagħtu ħarsa lejn abbonamenti dinamiċi:


    pakkett com.broadcast.demo;

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

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

    / **
     * Uża mod dinamiku biex tirreġistra x-xandir
     * @ awtur weijiang204321
     *
     */
    klassi pubblika DynamicRegisterBroadcastActivity testends Activity {
    Lil
    String finali statiku pubbliku NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
    riċevitur UnSortBroadcastReceiver protett;
    Lil
    @ Override
    vojt protett fuqCreate (Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main);
    Buttuna btn0 = (Buttuna) findViewById (R.id.btn);
    btn0.setOnClickListener (OnClickListener ġdid () {
    vojt pubbliku fuq Ikklikkja (Ara v) {
    // Ibgħat xandira
    Intent it = intenzjoni ġdida (NEW_LIFEFORM_DETECTED);
    ibgħat ix-xandir (it);
    }
    });
    }

    @ Override
    vojt protett fuq Resume () {
    super.onResume ();
    // Irreġistra għax-xandir
    IntentFilter counterActionFilter = IntentFilter ġdid (NEW_LIFEFORM_DETECTED);
    riċevitur = UnSortBroadcastReceiver ġdid ();
    registerReceiver (riċevitur, counterActionFilter);
    }

    @ Override
    vojt protett onPause () {
    super.onPause ();
    // Ikkanċella x-xandira
    unregisterReceiver (riċevitur);
    }
    }
    Hawnhekk qed nabbonaw għax-xandir fuq onResume, u nabbandunaw ix-xandir fuq onPause.
    Ibdel l-Attività mnedija għal DynamicRegisterBroadcastActivity f'AndroidMainfest.xml. Il-kontenut l-ieħor m'għandux għalfejn jiġi modifikat. Mexxi l-programm u ipprintja r-riżultat huwa sempliċi ħafna, allura ma narax l-istampa hawn.

     

    Ejja nagħtu ħarsa lejn xandir ordnat u xandir mhux ordnat

    Aħna diġà semmejna dan fil-bidu, ejja nagħtu ħarsa lejn ix-xandir diżordinat:

    L-ewwel niddefinixxu żewġ riċevituri tax-xandir:

    L-ewwel riċevitur tax-xandir:


    pakkett com.broadcast.receiver;

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

    / **
     * Xandir riċevitur A
     * @ awtur weijiang204321
     *
     */
    klassi pubblika SortBroadcastReceiverA testendi BroadcastReceiver {

    @ Override
    vojt pubbliku fuq Irċievi (Kuntest tal-Kuntest, Intenzjoni intenzjonata) {
    Log.e ("Demo:", "riċevitur tax-xandir A");
    }

    }
    It-tieni riċevitur tax-xandir:

    pakkett com.broadcast.receiver;

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

    / **
     * Xandir riċevitur B
     * @ awtur weijiang204321
     *
     */
    klassi pubblika SortBroadcastReceiverB testendi BroadcastReceiver {

    @ Override
    vojt pubbliku fuq Irċievi (Kuntest tal-Kuntest, Intenzjoni intenzjonata) {
    Log.e ("Demo:", "Xandira B");
    }

    Lil
    Lil
    }


    Abbona għax-xandir f'AndroidMainfest.xml


     
               
                   
               

           

               
                   
               

    riżultat tal-operazzjoni:


    Ir-riżultat tal-ġiri huwa kemmxejn stramb. Għaliex ir-riċevitur B fuq quddiem u r-riċevitur A fuq wara? Ir-raġuni hi li meta nabbonaw għax-xandira f'AndroidMainfest.xml, aħna nissettjaw il-valur tal-attribut android: prijorità fil-filtru tal-intenzjoni. Iktar ma jkun kbir il-valur, iktar tkun għolja l-prijorità. , Il-prijorità tar-riċevitur B hija 1000, il-prijorità tar-riċevitur A hija 999, allura B jirċievi x-xandira l-ewwel, u mbagħad A tirċeviha, imma m'hemm l-ebda konnessjoni bejn ir-riċevitur B u r-riċevitur A, u ma jistax ikun hemm interazzjoni Iva, minħabba li din hija xandira barra mill-ordni u mhux sinkronika, nistgħu nagħmlu esperiment billi nżidu kodiċi mal-metodu onReceiver f'B:

    abortBroadcast (); // Ittemm it-trasmissjoni ta ’din ix-xandira

    riżultat tal-operazzjoni:

     

    Nistgħu naraw l-iżball fil-pront, jiġifieri, xandira mhux ordnata mhix permessa li ttemm ix-xandira. Fil-fatt, it-terminazzjoni hija inutli, għax ir-riċevitur A għadu jirċievi x-xandira.

     

    Ejja nagħtu ħarsa lejn ix-xandir ordnat, il-kodiċi jeħtieġ li jiġi modifikat:

    L-ewwel wieħed huwa meta tibgħat xandira:


    Xandir ta 'intenzjoni = Intenzjoni ġdida ("com.broadcast.set.broadcast");
    sendOrderedBroadcast (imxandar, null);
    Imbagħad żid metodu biex ittemm ix-xandira fir-riċevitur B:
    abortBroadcast ();

    Il-kodiċi l-ieħor m'għandux għalfejn jiġi modifikat, ir-riżultat tal-operazzjoni:

     

    Hemm biss riċevitur B, riċevitur A ma jirċevix ix-xandira, għax ix-xandira tintemm fir-riċevitur B, u r-riċevituri sussegwenti ma jistgħux jaċċettawha.

    Immodifika l-kodiċi hawn taħt:

    Riċevitur B:


    pakkett com.broadcast.receiver;

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

    / **
     * Xandir riċevitur B
     * @ awtur weijiang204321
     *
     */
    klassi pubblika SortBroadcastReceiverB testendi BroadcastReceiver {

    @ Override
    vojt pubbliku fuq Irċievi (Kuntest tal-Kuntest, Intenzjoni intenzjonata) {
    Log.e ("Demo:", "riċevitur tax-xandir B");
    Bundle bundle = Bundle ġdid ();
    bundle.putString ("riċevitur_li jmiss", "riċevitur tax-xandir li jmiss");
    setResultExtras (bundle);
    }
    Lil
    }
    Wara li B jirċievi x-xandira, jaħżen xi valur u jgħaddih lir-riċevitur li jmiss.


    Kodiċi tar-Riċevitur A:


    pakkett com.broadcast.receive

     

     

     

     

    Lista kollha Mistoqsija

    nickname

    email

    mistoqsijiet

    prodotti oħra tagħna:

    Pakkett tat-Tagħmir tal-Istazzjon tar-Radju FM Professjonali

     



     

    Soluzzjoni IPTV tal-lukanda

     


      Daħħal l-email biex tieħu sorpriża

      fmuser.org

      es.fmuser.org
      it.fmuser.org
      fr.fmuser.org
      de.fmuser.org
      af.fmuser.org -> Afrikans
      sq.fmuser.org -> Albaniż
      ar.fmuser.org -> Għarbi
      hy.fmuser.org -> Armenjan
      az.fmuser.org -> Ażerbajġan
      eu.fmuser.org -> Bask
      be.fmuser.org -> Belarussu
      bg.fmuser.org -> Bulgaru
      ca.fmuser.org -> Katalan
      zh-CN.fmuser.org -> Ċiniż (Simplifikat)
      zh-TW.fmuser.org -> Ċiniż (Tradizzjonali)
      hr.fmuser.org -> Kroat
      cs.fmuser.org -> Ċek
      da.fmuser.org -> Daniż
      nl.fmuser.org -> Olandiż
      et.fmuser.org -> Estonjan
      tl.fmuser.org -> Filippin
      fi.fmuser.org -> Finlandiż
      fr.fmuser.org -> Franċiż
      gl.fmuser.org -> Galizjan
      ka.fmuser.org -> Ġorġjan
      de.fmuser.org -> Ġermaniż
      el.fmuser.org -> Grieg
      ht.fmuser.org -> Creole Ħaiti
      iw.fmuser.org -> Ebrajk
      hi.fmuser.org -> Ħindi
      hu.fmuser.org -> Ungeriż
      is.fmuser.org -> Iżlandiż
      id.fmuser.org -> Indoneżjan
      ga.fmuser.org -> Irlandiż
      it.fmuser.org -> Taljan
      ja.fmuser.org -> Ġappuniż
      ko.fmuser.org -> Korean
      lv.fmuser.org -> Latvjan
      lt.fmuser.org -> Litwan
      mk.fmuser.org -> Maċedonjan
      ms.fmuser.org -> Malajan
      mt.fmuser.org -> Malti
      no.fmuser.org -> Norveġiż
      fa.fmuser.org -> Persjan
      pl.fmuser.org -> Pollakk
      pt.fmuser.org -> Portugiż
      ro.fmuser.org -> Rumen
      ru.fmuser.org -> Russu
      sr.fmuser.org -> Serb
      sk.fmuser.org -> Slovakk
      sl.fmuser.org -> Sloven
      es.fmuser.org -> Spanjol
      sw.fmuser.org -> Swaħili
      sv.fmuser.org -> Svediż
      th.fmuser.org -> Tajlandiż
      tr.fmuser.org -> Tork
      uk.fmuser.org -> Ukrain
      ur.fmuser.org -> Urdu
      vi.fmuser.org -> Vjetnamiż
      cy.fmuser.org -> Welsh
      yi.fmuser.org -> Jiddix

       
  •  

    FMUSER Wirless Jittrażmetti Vidjo U Awdjo Aktar Faċli!

  • kuntatt

    indirizz:
    No.305 Kamra HuiLan Building No.273 Huanpu Road Guangzhou China 510620

    E-mail:
    [protett bl-email]

    Tel / WhatApps:
    8618078869184 +

  • kategoriji

  • newsletter

    L-EWWEL JEW ISEM SĦIĦ

    E-mail

  • soluzzjoni paypal  Unjoni tal-PunentBank taċ-Ċina
    E-mail:[protett bl-email]   WhatsApp: +8618078869184 Skype: sky198710021 Chat miegħi
    Copyright 2006-2020 Powered Permezz www.fmuser.org

    Ikkuntatjana