BroadcastReceiver
Service
BroadcastReceiver
1.创建一个Java类继承与BroadcastReceiver,重写里面的方法,什么都不用做,添加一句Toast就可以
Toast.makeText(context, "接收到了广播", Toast.LENGTH_SHORT).show();
2.在Manifest中声明这个receiver,可以在这里面注册也可以在代码中注册
3.在代码中注册并开启广播
mReceiver=new MyReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction("com.my.broadcast");
registerReceiver(mReceiver,filter);
Intent intent=new Intent();
intent.setAction("com.my.broadcast");
sendBroadcast(intent);
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mReceiver);
}
BroadcastReceiver实现定时功能
private AlarmManager mAlarmManager;
mAlarmManager= (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent1=new Intent();
intent1.setAction("com.my.broadcast");
PendingIntent pendingIntent=PendingIntent.getBroadcast(getApplicationContext(),0,intent1,PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis()+1000,3000,pendingIntent);
Intent intent2=new Intent();
intent2.setAction("com.my.broadcast");
PendingIntent pendingIntent1=PendingIntent.getBroadcast(getApplicationContext(),0,intent2,PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmManager.cancel(pendingIntent1);
Service开启和关闭
1.在Manifest中获取权限
2.创建一个Java类继承与Service,复写里面的方法
3.在Manifest中声明该服务
4.开启和关闭服务
Intent intent3=new Intent(getApplicationContext(),MyService.class);
startService(intent3);
Intent intent4=new Intent(getApplicationContext(),MyService.class);
stopService(intent4);
所有程序
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button mBtnSend;
private MyReceiver mReceiver;
private AlarmManager mAlarmManager;
private Button mBtnAlarm;
private Button mBtnCancle;
private Button mBtnStart;
private Button mBtnStop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mReceiver=new MyReceiver();
IntentFilter filter=new IntentFilter();
filter.addAction("com.my.broadcast");
registerReceiver(mReceiver,filter);
mAlarmManager= (AlarmManager) getSystemService(ALARM_SERVICE);
mBtnSend= (Button) findViewById(R.id.button_send);
mBtnAlarm= (Button) findViewById(R.id.button_alarm);
mBtnCancle= (Button) findViewById(R.id.button_cancle);
mBtnStart= (Button) findViewById(R.id.button_service_start);
mBtnStop= (Button) findViewById(R.id.button_service_stop);
mBtnSend.setOnClickListener(this);
mBtnAlarm.setOnClickListener(this);
mBtnCancle.setOnClickListener(this);
mBtnStart.setOnClickListener(this);
mBtnStop.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button_send:
Intent intent=new Intent();
intent.setAction("com.my.broadcast");
sendBroadcast(intent);
break;
case R.id.button_alarm:
Intent intent1=new Intent();
intent1.setAction("com.my.broadcast");
PendingIntent pendingIntent=PendingIntent.getBroadcast(getApplicationContext(),0,intent1,PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis()+1000,3000,pendingIntent);
break;
case R.id.button_cancle:
Intent intent2=new Intent();
intent2.setAction("com.my.broadcast");
PendingIntent pendingIntent1=PendingIntent.getBroadcast(getApplicationContext(),0,intent2,PendingIntent.FLAG_UPDATE_CURRENT);
mAlarmManager.cancel(pendingIntent1);
break;
case R.id.button_service_start:
Intent intent3=new Intent(getApplicationContext(),MyService.class);
startService(intent3);
break;
case R.id.button_service_stop:
Intent intent4=new Intent(getApplicationContext(),MyService.class);
stopService(intent4);
break;
default:
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mReceiver);
}
}
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "接收到了广播", Toast.LENGTH_SHORT).show();
}
}
public class MyService extends Service {
@Override
public void onCreate() {
super.onCreate();
Log.d("1","onCreate");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("1","onStartCommand");
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d("1","onDestroy");
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
}