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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM