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; } }
相关文章推荐
- 博客one day
- 省市联动
- Matlab启动时大量java错误的处理方法
- (转)彻底隐藏Nginx版本号的安全性与方法
- 2014年7月华为校招机试真题1
- 安卓监听滑屏事件
- JBPM 用foreach做动态任务分配,另加驳回操作
- 【iOS】720°全景图 HelloPanorama 介绍以及在使用过程中的一些问题
- Uva1600 - Patrol Robot(bfs解法)
- 页面生命周期
- Nginx负载均衡和LVS负载均衡的比较分析
- STL之set容器的总结
- Cocos2dx之Box2D——刚体
- [OPENGL][转] opengl里的坐标系
- 配置Android的SDK、NDK、ANT
- 画图+使用数组来标记,和图像01存储有点像
- iOS 本地化 国际化 相关的工具,命令,和可能遇到的问题
- nyoj 20 吝啬的国度(邻接表+bfs)
- UITextField 使用
- NYOJ 1233 差值