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

  • 相关阅读:
    最大流最小割——bzoj1001狼抓兔子,洛谷P2598
    求最小公因数和最大公倍数
    归并排序
    Splay
    Tarjan判断为什么不能把dfn写成low
    2-SAT问题
    离散数学-传递闭包(POJ3275)
    POJ3190
    安装环境gcc;
    二分折半排序
  • 原文地址:https://www.cnblogs.com/yechanglv/p/6922948.html
Copyright © 2011-2022 走看看