欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Messenger實現(xiàn)Service的雙向通信

 更新時間:2021年05月21日 10:21:00   作者:antimage08  
這篇文章主要為大家詳細介紹了使用Messenger實現(xiàn)Service的雙向通信,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

Android體系架構(gòu)中有一個解決方案:利用Android Messenger實現(xiàn)Service進程間雙向通信。

MainActivity 類:

package com.example.messengeservicetest;
 
import android.app.Activity;
import android.app.Service;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.Messenger;
import android.os.RemoteException;
import android.text.style.IconMarginSpan;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
 
public class MainActivity extends Activity {
 
 private Messenger sender;
 
 private ServiceConnection conn;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  Button bind = (Button)findViewById(R.id.bind);
  Button start = (Button)findViewById(R.id.start);
  Button send = (Button)findViewById(R.id.send);
  
  bind.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    getStart();
   }
  });
  
  
  start.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    Intent intent = new Intent(MainActivity.this, MessengerService.class);
    startService(intent);
   }
  });
  
  send.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    sendCount();
   }
  });
 }
 
 // 用于啟動 MessengerService
 private void getStart(){
  
  conn = new ServiceConnection() {
   
   @Override
   public void onServiceDisconnected(ComponentName name) {
    
   }
   
   @Override
   public void onServiceConnected(ComponentName name, IBinder service) {
    
    sender = new Messenger(service);
   }
  };
  
  
  Intent intent = new Intent(this, MessengerService.class);
  
//  startService(intent);
  bindService(intent, conn, Service.BIND_AUTO_CREATE);
 
 }
 
 // 傳遞數(shù)值
 private void sendCount(){
  
  Message msg = new Message();
  msg.arg1 = 20;
  msg.arg2 = 20;
 
  try {
   sender.send(msg);
  } catch (RemoteException e) {
   e.printStackTrace();
  }
  
 }
 
 @Override
 protected void onDestroy() {
  super.onDestroy();
  unbindService(conn);
 }
 
}

MessengerService.java 類:

package com.example.messengeservicetest;
 
import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.Messenger;
import android.util.Log;
 
public class MessengerService extends Service {
 
 Messenger messenger;
 Handler handler;
 int a, b;
 int sum = 0;
 
 @Override
 public IBinder onBind(Intent intent) {
  return messenger.getBinder();
 }
 
 @Override
 public void onCreate() {
  super.onCreate();
  
  handler = new Handler(){
 
   @Override
   public void handleMessage(Message msg) {
    super.handleMessage(msg);
 
    a = msg.arg1;
    b = msg.arg2;
   }
   
  };
  messenger = new Messenger(handler);
 }
 
 @Override
 public int onStartCommand(Intent intent, int flags, int startId) {
  
  int sum = subSum(a, b);
  System.out.println(sum + "");
  return super.onStartCommand(intent, flags, startId);
 }
 
 private int subSum(int a, int b){
  int sum = a + b;
  return sum;
 }
}

在 AndroidManifest.xml 中注冊:

<service android:name=".MessengerService"></service>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android之開發(fā)消息通知欄

    Android之開發(fā)消息通知欄

    本文主要介紹了Android開發(fā)消息通知欄的相關知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • 基于Android實現(xiàn)一個簡易音樂播放器

    基于Android實現(xiàn)一個簡易音樂播放器

    在Android平臺上開發(fā)一個音樂播放器是一項常見的任務,這涉及到對音頻文件的處理、用戶界面設計以及多媒體框架的運用,本項目基于樣例代碼進行擴展,雖然功能相對簡單,但包含了Android音樂播放器開發(fā)的核心知識點,需要的朋友可以參考下
    2024-08-08
  • Android 實現(xiàn)界面刷新的幾種方法

    Android 實現(xiàn)界面刷新的幾種方法

    這篇文章主要介紹了Android 實現(xiàn)界面刷新的相關資料,這里提供了幾種方法及實例代碼,具有一定的參考價值,需要的朋友可以參考下
    2016-11-11
  • Android實現(xiàn)跑馬燈效果的代碼詳解

    Android實現(xiàn)跑馬燈效果的代碼詳解

    Android中實現(xiàn)跑馬燈效果有多種方式,本文給大家介紹了Android實現(xiàn)跑馬燈效果的簡單示例,對大家的學習或工作有一定的幫助,感興趣的朋友可以參考下
    2018-05-05
  • 分享幾個Android開發(fā)有用的程序代碼

    分享幾個Android開發(fā)有用的程序代碼

    本文主要是給大家分享了幾個常用而且很實用的程序代碼片段,都是個人項目中提取出來的,有需要的小伙伴可以直接拿走使用
    2015-02-02
  • 完美解決Android Studio集成crashlytics后無法編譯的問題

    完美解決Android Studio集成crashlytics后無法編譯的問題

    下面小編就為大家?guī)硪黄昝澜鉀QAndroid Studio集成crashlytics后無法編譯的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Android自定義驗證碼輸入框的方法實例

    Android自定義驗證碼輸入框的方法實例

    這篇文章主要給大家介紹了關于Android自定義驗證碼輸入框的相關資料,文中通過實例代碼介紹的非常詳細,對各位Android開發(fā)者們具有一定的參考學習價值,需要的朋友可以參考下
    2022-02-02
  • Android多線程斷點續(xù)傳下載示例詳解

    Android多線程斷點續(xù)傳下載示例詳解

    這篇文章主要為大家詳細介紹了Android多線程斷點續(xù)傳下載示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Android圖片壓縮以及優(yōu)化實例

    Android圖片壓縮以及優(yōu)化實例

    本篇文章主要介紹了Android圖片壓縮以及優(yōu)化實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Android開發(fā)之基于DialogFragment創(chuàng)建對話框的方法示例

    Android開發(fā)之基于DialogFragment創(chuàng)建對話框的方法示例

    這篇文章主要介紹了Android開發(fā)之基于DialogFragment創(chuàng)建對話框的方法,結(jié)合實例形式分析了DialogFragment創(chuàng)建對話框的具體功能與布局相關實現(xiàn)技巧,需要的朋友可以參考下
    2017-08-08

最新評論