利用BroadCastReceiver实现service与acvitity之间的通信(线程倒计时)
来源:互联网 发布:林立雯淘宝店名字 编辑:程序博客网 时间:2024/06/05 05:24
public class MainActivity extends AppCompatActivity { private TextView tv_number; private Button btn_start; private MyBroadReciver reciver=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //⑦程序创建时实例化自定义广播解析者 reciver=new MyBroadReciver(); tv_number= (TextView) findViewById(R.id.tv_number); btn_start= (Button) findViewById(R.id.btn_start); btn_start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //①启动跳转到service turnService(); } }); } //定义跳转到service的方法 private void turnService(){ Intent intent=new Intent(this,MyService.class); startService(intent); } /** * ⑥定义广播接收者,重写onReceive方法 */ class MyBroadReciver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { String mes=intent.getStringExtra("count"); tv_number.setText(mes); } } /** * ⑧开始接收广播时动态获取权限 */ @Override protected void onStart() { super.onStart(); IntentFilter filter=new IntentFilter(); filter.addAction("com.work.test310.MainAcvitity"); registerReceiver(reciver,filter); } /** * ⑨结束广播时释放资源,解除绑定 */ @Override protected void onStop() { super.onStop(); unregisterReceiver(reciver); }
public class MyService extends Service { private MyThread thread=null; public static int i=10; public MyService() { } @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. throw new UnsupportedOperationException("Not yet implemented"); } /** * ③重写onStartCommand方法 * @param intent * @param flags * @param startId * @return */ @Override public int onStartCommand(Intent intent, int flags, int startId) { //⑤在service中实例化并开启线程 if(thread==null){ thread=new MyThread(); thread.start(); } return super.onStartCommand(intent, flags, startId); } /** * ④自定义线程类,设置倒计时的线程方法 */ class MyThread extends Thread{ @Override public void run() { while (i>=0){ Intent intent=new Intent("com.work.test310.MainAcvitity"); intent.putExtra("count",String.valueOf(i)); sendBroadcast(intent); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } i--; } super.run(); } }
0 0
- 利用BroadCastReceiver实现service与acvitity之间的通信(线程倒计时)
- ------------------------------利用BroadcastReceiver进行Activity和Service之间的通信(留着自己参考用)
- Widget与service利用BroadcastReceiver通信
- Activity、Service、BroadCastReceiver之间的通信
- 利用多线程技术实现线程之间的通信(转)
- 利用BroadcastReceiver实现抢购倒计时
- 利用广播与Service之间进行通信
- 利用ReentrantLock的Condition实现线程之间的通信
- VC中利用多线程技术实现线程之间的通信
- VC中利用多线程技术实现线程之间的通信
- VC中利用多线程技术实现线程之间的通信
- VC中利用多线程技术实现线程之间的通信
- VC中利用多线程技术实现线程之间的通信
- VC中利用多线程技术实现线程之间的通信
- VC中利用多线程技术实现线程之间的通信
- VC中利用多线程技术实现线程之间的通信
- VC中利用多线程技术实现线程之间的通信
- VC中利用多线程技术实现线程之间的通信
- [LeetCode] 75. Sort Colors java
- 如何利用an-aw-base框架快速开发android应用application
- magento 获取所有分类并打印
- CF 387C 贪心
- Error:Execution failed for task ':app:packageDebug'...
- 利用BroadCastReceiver实现service与acvitity之间的通信(线程倒计时)
- Material Design 设计风格进阶篇 <二>
- java.lang.OutOfMemoryError: PermGen space
- 跨域与跨域访问
- 学习 DLNA
- Inception-v4, Inception-ResNet
- 【服务器】把个人电脑打造成发布网站的服务器
- js学习记录2
- Java使用JVM堆外内存