Skip to content

Instantly share code, notes, and snippets.

@jacquesgiraudel
Created March 16, 2016 06:27
Show Gist options
  • Save jacquesgiraudel/67486a9c53e68453bb97 to your computer and use it in GitHub Desktop.
Save jacquesgiraudel/67486a9c53e68453bb97 to your computer and use it in GitHub Desktop.
localbroadcast-snippet
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