android中實現service動態更新UI界面


案例:通過service向遠程服務器發送請求,根據服務器返回的結果動態更新主程序UI界面,主程序可實時關閉或重啟服務。


注冊BroadcastReceiver

 

在主程序activity中注冊一個BroadcastReceiver,用於接收Service發布的廣播。

 

  1. @Override 
  2. protected void onStart() {//重寫onStart方法  
  3.     dataReceiver = new DataReceiver();  
  4.     IntentFilter filter = new IntentFilter();//創建IntentFilter對象  
  5.     filter.addAction("com.justel.serviceBC");  
  6.     registerReceiver(dataReceiver, filter);//注冊Broadcast Receiver  
  7.     super.onStart();  


停止service命令

 

主程序activity可發布廣播,用於向后台service傳遞數據或控制信息,如停止service命令。

 

  1.       btnStop.setOnClickListener(new OnClickListener() {//為按鈕添加點擊事件監聽     
  2.     @Override 
  3.     public void onClick(View v) {//重寫onClick方法  
  4.         Intent myIntent = new Intent();//創建Intent對象  
  5.         myIntent.setAction("com.justel.service");  
  6.         myIntent.putExtra("cmd", CMD_STOP_SERVICE);  
  7.         sendBroadcast(myIntent);//發送廣播  
  8.     }  
  9. }); 


接收廣播

 

后台service注冊BroadCastReceiver用於接受主程序發送的廣播

 

  1. @Override 
  2. public int onStartCommand(Intent intent, int flags, int startId) {//重寫onStartCommand方法  
  3.     IntentFilter filter = new IntentFilter();//創建IntentFilter對象  
  4.     filter.addAction("com.justel.service");  
  5.     registerReceiver(cmdReceiver, filter);//注冊Broadcast Receiver  
  6.     doJob();//調用方法啟動線程,自己來完成  
  7.     return super.onStartCommand(intent, flags, startId);  


實時發送 

 

后台service在doJob()方法中連接服務器並向主程序實時發送廣播。

 

  1. /**  
  2.  * 啟動一個子純種並連接服務器,接收服務器返回數據data。代碼略。。。  
  3.  */ 
  4. Object data;//服務器返回的數據data  
  5. Intent intent = new Intent();//創建Intent對象  
  6. intent.setAction("com.justel.service");  
  7. intent.putExtra("data", data);  
  8. sendBroadcast(intent);//發送廣播 

 


免責聲明!

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



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