国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中Service和Activity相互通信示例代碼

2019-12-12 02:03:55
字體:
來源:轉載
供稿:網友

前言

在Android中,Activity主要負責前臺頁面的展示,Service主要負責需要長期運行的任務,所以在我們實際開發中,就會常常遇到Activity與Service之間的通信,本文就給大家詳細介紹了關于Android中Service和Activity相互通信的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

Activity向Service通信

第一種方式:通過MyBinder方式調用Service方法

MainActivity

public class MainActivity extends Activity { private MyConn conn; private MyBinder myBinder;//我定義的中間人對象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);  Intent intent = new Intent(this,BanZhengService.class); //連接服務  conn = new MyConn(); bindService(intent, conn, BIND_AUTO_CREATE);  } //點擊按鈕調用服務里面辦證的方法 public void click(View v) {  myBinder.callBanZheng(10000000);  }   //監視服務的狀態 private class MyConn implements ServiceConnection{  //當服務連接成功調用 @Override public void onServiceConnected(ComponentName name, IBinder service) {  //獲取中間人對象  myBinder = (MyBinder) service;   } //失去連接 @Override public void onServiceDisconnected(ComponentName name) {   }} @Override protected void onDestroy() { //當activity 銷毀的時候 解綁服務  unbindService(conn); super.onDestroy(); } }

BanZhengService

public class BanZhengService extends Service { //把我定義的中間人對象返回  @Override public IBinder onBind(Intent intent) { return new MyBinder(); }  //辦證的方法 public void banZheng(int money){ if (money>1000) {  Toast.makeText(getApplicationContext(), "我是領導 把證給你辦了", 1).show(); }else {  Toast.makeText(getApplicationContext(), "這點錢 還想辦事....", 1).show(); } }   //[1]定義中間人對象(IBinder)  public class MyBinder extends Binder{  public void callBanZheng(int money){  //調用辦證的方法  banZheng(money); }  }}

第二種方式:通過接口Iservice調用Service方法

MainActivity

public class MainActivity extends Activity { private MyConn conn; private Iservice myBinder;//我定義的中間人對象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);  Intent intent = new Intent(this,DemoService.class); //連接服務  conn = new MyConn(); bindService(intent, conn, BIND_AUTO_CREATE);  } //點擊按鈕調用服務里面辦證的方法 public void click(View v) {  myBinder.callBanZheng(10000000);// myBinder.callPlayMaJiang();// myBinder.callXiSangNa();  }   //監視服務的狀態 private class MyConn implements ServiceConnection{  //當服務連接成功調用 @Override public void onServiceConnected(ComponentName name, IBinder service) {  //獲取中間人對象  myBinder = (Iservice) service;   } //失去連接 @Override public void onServiceDisconnected(ComponentName name) {   }  } @Override protected void onDestroy() { //當activity 銷毀的時候 解綁服務  unbindService(conn); super.onDestroy(); } }

DemoService

public class DemoService extends Service { //把我定義的中間人對象返回  @Override public IBinder onBind(Intent intent) { return new MyBinder(); }  //辦證的方法 public void banZheng(int money){ if (money>1000) {  Toast.makeText(getApplicationContext(), "我是領導 把證給你辦了", 1).show(); }else {  Toast.makeText(getApplicationContext(), "這點錢 還想辦事....", 1).show(); } }  //打麻將的方法 public void playMaJiang(){ System.out.println("陪領導打麻將"); }  //洗桑拿的方法 public void 洗桑拿(){ System.out.println("陪領導洗桑拿");  }     //[1]定義中間人對象(IBinder)  private class MyBinder extends Binder implements Iservice{  public void callBanZheng(int money){  //調用辦證的方法  banZheng(money); }  public void callPlayMaJiang(){  //調用playMaJiang 的方法  playMaJiang();   }  public void callXiSangNa(){  //調用洗桑拿的方法  洗桑拿(); }}}

接口Iservice

public interface Iservice { //把領導想暴露的方法都定義在接口里 public void callBanZheng(int money);// public void callPlayMaJiang(); }

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安庆市| 华安县| 广昌县| 浦县| 称多县| 塔河县| 张家口市| 阜新市| 靖西县| 林口县| 晋江市| 名山县| 渭南市| 开阳县| 万盛区| 日照市| 滨海县| 东宁县| 花莲市| 黎城县| 荔浦县| 吐鲁番市| 友谊县| 弥渡县| 朝阳市| 巴林左旗| 安塞县| 高密市| 阿巴嘎旗| 无棣县| 中西区| 阳高县| 伊宁县| 三门峡市| 西平县| 育儿| 太仓市| 花莲市| 芦山县| 府谷县| 商南县|