zoukankan      html  css  js  c++  java
  • android 之 service

    在Activity中设置两个按钮,分别为启动和关闭Service:

    bt01.setOnClickListener(new Button.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent i = new Intent(mainActivity.this, MyService.class);
                    startService(i);
                    Toast.makeText(mainActivity.this, "Service启动成功",
                            Toast.LENGTH_LONG).show();
                }
            });
            bt02.setOnClickListener(new Button.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Intent i = new Intent(mainActivity.this, MyService.class);
                    stopService(i);
                    Toast.makeText(mainActivity.this, "Service启动成功",
                            Toast.LENGTH_LONG).show();
                }
            });

    添加MyService.java

    public class MyService extends Service {
        MyThread myThread;

        @Override
        public IBinder onBind(Intent intent) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public void onStart(Intent intent, int startId) {//启动Service
            // TODO Auto-generated method stub
            myThread = new MyThread();
            myThread.start();
            super.onStart(intent, startId);
        }

        @Override
        public void onDestroy() {//关闭Service
            // TODO Auto-generated method stub
            myThread.flag = false;
            super.onDestroy();
        }

        class MyThread extends Thread {
            boolean flag = true;
            int c = 0;

            public void run() {
                while (flag) {
                   Intent i = new Intent("com.sunny.myThread");
                    i.putExtra("myThread", c);
                    sendBroadcast(i);//发送广播,在mainActivity中进行捕获,更新数据
                    c++;
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        }

    }

    mainActivity中,添加广播接收器,过滤接收来自action为com.sunny.myThread的广播:

            IntentFilter intentFilter = new IntentFilter("com.sunny.myThread");
            MyBroadcastReceiver myBroadcastReceiver = new MyBroadcastReceiver();
            registerReceiver(myBroadcastReceiverintentFilter);//注册广播接收器

    其中:

    class MyBroadcastReceiver extends BroadcastReceiver {
            @Override
            public void onReceive(Context context, Intent intent) {
                // TODO Auto-generated method stub
                Bundle myBundle = intent.getExtras();
                int myInt = myBundle.getInt("myThread");
                     tv01.setText("后台Service运行了" + myInt + "秒");
            }

        }

    image

  • 相关阅读:
    Idea初始化Vue项目
    为什么在vue的组件中,data要用function返回对象呢
    SpringBoot+RabbitMQ 快速入门
    Neo4j入门-CQL
    记一次坑爹的websocket Response code was not 101: 404的问题
    Neo4j入门-开始使用
    关于乱码问题的一些思考
    搭建apache2.4+php7+mysql+phpmyadmin
    oracle dba 关闭 002
    oracle 正则表达式 非字母 非数字
  • 原文地址:https://www.cnblogs.com/yechanglv/p/6922948.html
Copyright © 2011-2022 走看看