Android 服务和广播的使用

Android 服务和广播的使用

服务的使用

创建服务类

 创建一个java文件,取名 mService.java,继承Service。

public class mService extends Service {}

返回服务控制器

复制代码
  /**
     * 绑定服务
     *
     * @param intent
     * @return
     */
    @Override
    public IBinder onBind(Intent intent) {
        return new myControl();
    }
复制代码

创建一个中间类,来操作服务类方法。

复制代码
    /**
     * 中间类
     */
    public class myControl extends Binder {
    
       //  创建方法,可供其他activity内调用
        public void mcontrol(String instructions) {
            // ....
        }
    }    
复制代码

创建服务

    /**
     * 创建服务
     */
    @Override
    public void onCreate() {
        super.onCreate();
        // ....创建服务时执行的方法
    }

开启服务

    /**
     * 开启服务
     */
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    }

activity使用服务

在需要使用服务的activity文件的 onCreate 文件中引入服务并启动

        // 启动服务
        Intent intent = new Intent(MainActivity.this, mService.class);
        startService(intent);
        conn = new mControl();
        // 绑定服务
        bindService(intent, conn, BIND_AUTO_CREATE);    

创建中间类,用来操作服务中的方法

复制代码
    /**
     * 创建中间件对象
     */
    class mControl implements ServiceConnection {

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            control = (mService.myControl) service;
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {

        }
    }
复制代码

当activity中需要调用服务中的方法时

 control.mcontrol("31");

服务使用就是这样。

广播的使用

发送广播

        // 发送广播
        Intent intent = new Intent();
        intent.putExtra("temValue", temValue);
        intent.setAction("mService");
        sendBroadcast(intent);    

接受广播

在需要接受广播的 activity 中注册广播监听者

        // 注册广播监听者
        receiver = new mReceiver();
        IntentFilter filter = new IntentFilter();
        filter.addAction("mService");
        MainActivity.this.registerReceiver(receiver, filter);

创建广播监听者内部类

复制代码
    // 广播监听者
    public class mReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            Bundle bundle = intent.getExtras();
            temValue.setText(bundle.getString("temValue"));
        }
    }
复制代码

 

广播简单的用法就这样。

 案例:https://github.com/wjw1014/IntelligentMine/blob/master/app/src/main/java/com/example/admin/mine_feiyang/mService.java

posted @   叫我+V  阅读(1101)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示