• 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

  • 相关阅读:
    React.memo()使用教程
    React组件什么时候render
    redux-thunk使用教程
    Redux数据持久化
    Mac 中安装 nvm: 切换Node 不同版本
    上传文件类型选择
    Python获取软件安装列表
    Java读取text文件
    负载均衡
    远程调用
  • 原文地址:https://www.cnblogs.com/yechanglv/p/6922948.html
Copyright © 2020-2023  润新知