AndroidManifest.xml
implicit braodcast
+ As part of the Android 8.0 (API level 26) Background Execution Limits
+ apps that target the API level 26 or higher can no longer register broadcast receivers for implicit broadcasts in their manifest https://developer.android.com/guide/components/broadcast-exceptions
<receiver android:name=".TestReceiver">
<intent-filter>
<action android:name="com.example.test" />
</intent-filter>
</receiver>
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent sendIntent = new Intent("com.example.test");
sendIntent.putExtra("isBoolean", true);
sendIntent.putExtra("sendInteger", 123);
sendIntent.putExtra("sendString", "send");
sendBroadcast(sendIntent);
}
});
public class TestReceiver extends BroadcastReceiver {
private static final String TAG = TestReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent) {
String name = intent.getAction();
if(name.equals("com.example.test")) {
if(intent.getBooleanExtra("isBoolean", false)) {
Log.d("TEST", intent.getStringExtra("sendString"));
}
}
}
}
explict broadcast
해체 등록 자유자재, life cycle에 영향 받음
package com.example.administrator.receive;
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
BroadcastReceiver mBroadcastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent sendIntent = new Intent("com.example.test");
sendIntent.putExtra("isBoolean", true);
sendIntent.putExtra("sendInteger", 123);
sendIntent.putExtra("sendString", "send");
sendBroadcast(sendIntent);
}
});
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.example.test");
mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("com.example.test")) {
Log.d("TEST", TAG);
String a = intent.getStringExtra("sendString");
Log.d("TEST", a);
}
}
};
registerReceiver(mBroadcastReceiver, intentFilter);
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver();
}
private void unregisterReceiver() {
if(mBroadcastReceiver != null){
this.unregisterReceiver(mBroadcastReceiver);
mBroadcastReceiver = null;
}
}
}