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

原文地址:https://www.cnblogs.com/wjw1014/p/11803842.html