2014-04-25 64 views
2

我在我的Android應用上運行Socket.IO客戶端,我無法從Service(處理套接字連接)向Fragments之一傳遞數據。從服務到活動(或片段)傳遞信息的最佳實踐

在我的Activities之一中,我打開了一個包含配置文件頁面的片段。當配置文件片段打開時,我向服務器發送一個事件請求配置文件信息。

我從服務器獲取沒有問題的信息,但我無法將該數據(JSON字符串)發送到當前片段。

Service傳遞信息到Fragment(或Activity)的最佳做法是什麼?

謝謝!

回答

4

您可以bindserviceActivity創建一個service connection。因此,您將有instanceservice進行通信。

在此處查看我的答案How to pass a handler from activity to service關於如何綁定到服務並建立服務連接。

從這個

除此之外,已經於您的服務定義的interface

public interface OnServiceListener{ 
    public void onDataReceived(String data); 
} 

添加set Listener方法service從註冊監聽Activity

private OnServiceListener mOnServiceListener = null; 

public void setOnServiceListener(OnServiceListener serviceListener){ 
    mOnServiceListener = serviceListener; 
} 

接下來,在你的活動實施監聽器接口

public class MainActiv兩者均延伸ActionBarActivity 實現CustomService.OnServiceListener {

@Override 
    public void onDataReceived(String data) { 

    } 
} 

其次,在建立業務連接,註冊偵聽

@Override 
    public void onServiceConnected(ComponentName componentName, IBinder iBinder) { 
     customService = ((CustomService.LocalBinder) iBinder).getInstance(); 
     customService.setOnServiceListener(MainActivity.this); 
    } 

現在,當您收到的數據服務的數據傳遞到活動通過onDataReceived方法。

if(mOnServiceListener != null){ 
     mOnServiceListener.onDataReceived("your data"); 
    } 
+0

完美地工作!正是我需要的。謝謝! –