Quick Tips: Hvordan bruke EventBus Library

Quick Tips: Hvordan bruke EventBus Library
27
Del
Del
Del

Denne Cyber ​​Monday Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.
Hva du skal lage

Bygge en Android-app som har flere aktive komponenter som kommuniserer med hverandre kan få kjedelige. For å spare tid, utviklere ofte ender opp med tett koblede komponenter i sine apps. EventBus er et populært open-source bibliotek som ble opprettet for å løse dette problemet ved hjelp av utgiver /abonnent mønster.

Bruke EventBus bibliotek, kan du passere meldinger fra en klasse til en eller flere klasser i bare noen få linjer med kode. Dessuten, alle klasser involvert er helt frikoplet fra hverandre, noe som fører til kode som er mindre komplisert, og enklere å vedlikeholde og feilsøke.

I denne rask spiss, du kommer til å lære å bruke den EventBus biblioteket ved bygge en enkel Android applikasjon som viser ladestatus for enheten. Fordi endringer i ladestatus er systemhendelser, er programmet kommer til å ha en aktivitet som må motta informasjon fra en BroadcastReceiver-perfekt scenario for å bruke en hendelse buss.

Forutsetninger
< p> Sørg for at du har Eclipse ADT Bundle satt opp. Du kan laste det ned fra Android Developer nettstedet.

1. Opprett nytt prosjekt

Start-Eclipse og opprette en ny Android-applikasjon. Navn søknaden EventBusSample. Velg en unik pakke navn og sette minstekravet SDK til Android 2.2 og Target SDK til Android 4.4.

Vi kommer til å skape aktivitet selv, så fjerner du markeringen skape aktivitet og klikk Fullfør.
< h2> 2. Edit Manifest

Denne applikasjonen har ett BroadcastReceiver som svarer på følgende actions:


android.intent.action.ACTION_POWER_CONNECTED

android.intent.action.ACTION_POWER_DISCONNECTED

Name den BroadcastReceiver ChargingReceiver og erklære den i AndroidManifest.xml filen
< mottaker android. name = ". ChargingReceiver" > < intent-filter > < handling android: name = "android.intent.action.ACTION_POWER_CONNECTED" /> < handling android: name = "android.intent.action.ACTION_POWER_DISCONNECTED" /> < /intent-filter > < /mottaker >

Appen har én aktivitet for å vise ladestatus. Name it DisplayActivity og erklærer det som vist nedenfor
< aktivitet android. Name = ". DisplayActivity" > < intent-filter > < handling android: name = "android.intent.action.MAIN" /> < kategori android: name = "android.intent.category.LAUNCHER" /> < /intent-filter > < /aktivitets >
3.

4 Legg EventBus Library

Last ned den nyeste versjonen av EventBus biblioteket som et JAR fra Maven Central og legge til JAR i prosjektets libs katalogen.. Lag ChargingEvent Class

Arrangementer på arrangementet bussen er ingenting, men gjenstander som inneholder informasjon som skal formidles. La ChargingEvent være navnet på den klassen som inneholder informasjon som sendes fra BroadcastReceiver til aktivitet. Dette er en enkel klasse som har bare en streng for å representere informasjon. Det har også en konstruktør for å sette verdien av strengen og tilbehør for å få sin verdi

Opprett en ny fil med navnet ChargingEvent.java og legge til følgende kode i det.
Pakke com .hathy.eventbussample; public class ChargingEvent {private String data; offentlig ChargingEvent (String data) {this.data = data; } Public String GetData () {return data; }}
5. Lag BroadcastReceiver Class

Opprett en ny klasse som heter ChargingReceiver som strekker BroadcastReceiver. Denne klassen bruker hendelsen bussen til å publisere meldinger. Den har en variabel som heter buss, som refererer bussen skapt av EventBus biblioteket. Bussen er singel, og du må bruke den getDefault metode for å referere til den.

I OnReceive metoden skaper vi en ny forekomst av ChargingEvent klassen og legge vårt budskap til det. Her er et eksempel melding:
@ 14: 23:. 20 denne enheten startet lading

For å generere denne meldingen, må vi gjøre følgende:

Bruk metoder tilgjengelig i . Tid klasse for å angi tidspunktet da hendelsen inntraff

Tilføy strengen "denne enheten startet lading | utlading" basert på handlingen mottatt. Hvis den mottatte handlingen Intent.ACTION_POWER_CONNECTED, enheten lades. Hvis det er Intent.ACTION_POWER_DISCONNECTED er enheten utlading.

Når ChargingEvent objektet har riktig informasjon, den er publisert på hendelsen bussen bruker post-metoden. Gjennomføringen av ChargingReceiver klassen skal nå se slik ut:
pakken com.hathy.eventbussample, import de.greenrobot.event.EventBus, import android.content.BroadcastReceiver, import android.content.Context, import android.content. Intent, import android.text.format.Time; public class ChargingReceiver strekker BroadcastReceiver {private EventBus buss = EventBus.getDefault (); Override Public void OnReceive (Context kontekst, Intent hensikt) {ChargingEvent event = null; //Få nåværende tidspunkt Tid nå = nye Time (); now.setToNow (); String timeOfEvent = now.format ("% H:% M:% S"); String eventData = "@" + timeOfEvent + "denne enheten startet"; if (. intent.getAction () equals (Intent.ACTION_POWER_CONNECTED)) {event = new ChargingEvent (eventData + "lading."); } Else if (intent.getAction () equals (Intent.ACTION_POWER_DISCONNECTED).) {Event = new ChargingEvent (eventData + "utlading."); } //Post hendelsen bus.post (event); }}

Som du kan se, publisere meldinger til hendelsen bussen tar bare en eneste linje med kode. Videre har forlaget ikke trenger å vite noe om abonnenten (e).

6. Lag DisplayActivity Class

Opprett en ny klasse som heter DisplayActivity. Denne klassen er ansvarlig for å vise meldingene om hendelsene som er publisert på arrangementet bussen.

Denne klassen også har en variabel som refererer til hendelsen bussen. Som EventBus biblioteket følger av Singleton mønster, er den samme som forekomst tilgjengelig for BroadcastReceiver forekomsten av hendelsen buss tilgjengelig for denne aktiviteten.

Hvis du vil tillate en klasse for å abonnere på hendelser på bussen, registeret Metoden er påberopt. I vår aktivitet, vi kaller det i onCreate metoden.

På samme måte, å slutte å motta hendelser, den unregister metoden kalles. Vi kaller denne metoden i onDestroy metoden for å sørge for at alle ressurser blir frigjort.

Aktiviteten har en veldig enkel layout, som bare inneholder en TextView som viser meldinger. Det er derfor ikke nødvendig å lage et oppsett for det. . Vi bare bruke TextView som innholdet visning av aktiviteten

På dette punktet, bør gjennomføringen av DisplayActivity klassen se slik ut:
pakken com.hathy.eventbussample; import android.app.Activity; import android.os.Bundle, import android.widget.TextView, import de.greenrobot.event.EventBus; public class DisplayActivity strekker Aktivitet {private EventBus buss = EventBus.getDefault (); private TextView view; Override Beskyttet void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); view = new TextView (denne); view.setTextSize (20F); view.setPadding (20, 20, 20, 20); view.setText ("Waiting for hendelser ..."); setContentView (vis); //Registrer deg som abonnent bus.register (denne); }Override Beskyttet void onDestroy () {//Unregister bus.unregister (denne); super.onDestroy (); }}

Hver klasse som har til hensikt å motta hendelser fra arrangementet bussen bør inneholde en onEvent metode. Navnet på denne metoden er viktig, fordi den EventBus biblioteket bruker Java Reflection API for å få tilgang til denne metoden. Den har et enkelt parameter som refererer til hendelsen. I vårt tilfelle, er parameteren skal være av typen ChargingEvent.

Alt vi gjør i denne metoden er tilføye den siste mottatte melding til innholdet i TextView. Gjennomføringen av onEvent metoden ser slik ut:
public void onEvent (ChargingEvent hendelse) {view.setText (view.getText () + "\\ n" + event.getData ());}
7. Kjør og Test

Programmet er nå klar til å bli testet. Kompilere og kjøre den på en fysisk Android-enhet. Når programmet er ferdig lansering, plugg og trekker ut strømledningen et par ganger for å se ladestatus endring.

Konklusjon

I denne opplæringen, har du lært hvordan du bruker EventBus bibliotek og hvor mye det forenkler kommunikasjonen mellom klassene. Biblioteket er optimalisert for Android-plattformen og er veldig lett. Dette betyr at du kan bruke den i dine prosjekter uten å måtte bekymre seg om størrelsen på programmet ditt. Hvis du vil vite mer om EventBus biblioteket, besøke prosjektet på GitHub.



Previous:
Next Page: