2011-05-21 64 views
2

如何從android服務(從onStart或OnCreate)向android Activity傳遞數據。我想將使用setResult(RESULT_OK,intent)的服務內的數據傳遞給發件人(服務啓動活動)至OnActivityResult()方法。如何將數據從android服務(從onStart或OnCreate)傳遞到android Activity

+0

如果出現上述情況亙古不工作,那麼我能和意圖代替的setResult()發送數據,因爲的setResult()用於startActivityForResult ();否則我可以使用sendBroadCast()方法。 – Girish 2011-05-21 11:31:28

回答

0

你是否從服務開始活動?如果是這樣,爲什麼不能將數據放在意圖內?

Intent intent = new Intent(context, MyActivity.class); 
intent.putExtra("DataToBePassed", "some data here.."); 
startActivity(intent); 

setResult僅當您通過startActivityForResult啓動活動並將結果設置爲所調用的活動時。不在服務上,服務就是會得到結果的服務。

請閱讀http://developer.android.com/guide/topics/intents/intents-filters.html瞭解更多信息。

+0

我想你可能會混淆我的問題。簡單地說,我想從服務內部傳遞數據(從OnCreate或OnStart方法)到當前應用程序中的活動。根據我的知識,我無法像上面所說的那樣直接向活動發送數據。我的疑問是,我們是否需要像sendbroadcast()方法那樣的東西,還是我們需要使用任何像IBinder方法這樣做? – Girish 2011-05-24 06:50:14

+0

與您應該綁定的服務進行通信。你也可以使用sendbroadcast方法都應該工作。儘管最好的方法仍然是綁定到服務.. – Rejinderi 2011-05-25 01:53:18

0

您可以使用界面。 像

public interface YourCallback { 
    public void onSuccess(String result); 
} 

然後使用在任何地方。我用我的OM方法onPostExecute。

yourCallback.onSuccess(result); 

而且使用活動的OnCreate

new YourAsyncTask(new YourAsyncTas() { 

    @Override 
    public void onSuccess(String result) { 
     yourGlobalFeald=result; 

    } 
    }).execute(if you want to use executable method);