Created
March 16, 2016 06:27
-
-
Save jacquesgiraudel/67486a9c53e68453bb97 to your computer and use it in GitHub Desktop.
localbroadcast-snippet
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class ExampleActivity extends AppCompatActivity { | |
... | |
// Declaration of the broadcast receiver | |
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() { | |
@Override | |
public void onReceive(Context context, Intent intent) { | |
// Retrieving of the parcelable object | |
ComplexObject complexObject = | |
intent.getParcelableExtra("MyComplexObject"); | |
textView.setText(complexObject.getMessage()); | |
} | |
}; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
... | |
AsyncTask asyncTask = new ExampleTask(); | |
asyncTask.execute("Hello ! "); | |
... | |
} | |
@Override | |
public void onResume() { | |
super.onResume(); | |
LocalBroadcastManager localBroadcastManager = | |
LocalBroadcastManager.getInstance(this); | |
// Registering of the broadcast receiver | |
localBroadcastManager.registerReceiver(mMessageReceiver, | |
new IntentFilter("MyIntentMessage")); | |
} | |
@Override | |
public void onPause() { | |
// Unregistering of the broadcast receiver | |
localBroadcastManager.unregisterReceiver(mMessageReceiver); | |
super.onPause(); | |
} | |
// Declaration of the message object | |
// Implementation of the parcelable methods | |
class ComplexObject implements Parcelable { | |
private String message; | |
// Other fields ... | |
public ComplexObject(String message) { | |
this.message = message; | |
} | |
public String getMessage() { | |
return message; | |
} | |
protected ComplexObject(Parcel in) { | |
message = in.readString(); | |
} | |
public final Creator<ComplexObject> CREATOR = | |
new Creator<ComplexObject>() { | |
@Override | |
public ComplexObject createFromParcel(Parcel in) { | |
return new ComplexObject(in); | |
} | |
@Override | |
public ComplexObject[] newArray(int size) { | |
return new ComplexObject[size]; | |
} | |
}; | |
@Override | |
public void writeToParcel(Parcel parcel, int i) { | |
parcel.writeString(message); | |
// Writting of the other fields... | |
} | |
@Override | |
public int describeContents() { | |
return 0; | |
} | |
} | |
class ExampleTask extends AsyncTask<Object, Void, Void>{ | |
@Override | |
protected Void doInBackground(Object... objects) { | |
Intent intent = new Intent("MyIntentMessage"); | |
intent.putExtra("MyComplexObject", | |
new ComplexObject((String)strings[0])); | |
LocalBroadcastManager.getInstance(getApplicationContext()). | |
sendBroadcast(intent); | |
return null; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment