如何将数据从android服务(从onStart或OnCreate)传递到android Activity

问题描述:

如何从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

你是否从服务开始活动?如果是这样,为什么不能将数据放在意图内?

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

您可以使用界面。 像

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);