您的位置:首页 > 其它

15/9/8/BroadcastReceiver实现定时功能/Service

2015-09-08 18:59 309 查看

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: