如何从Android服务获取数据?

时间:2016-04-26 09:13:23

标签: android intentservice

我有一个扩展Application

的类
public class MyApp extends Application
{
    @Override
    public void onCreate()
    {
        super.onCreate();
        Intent intent = new Intent(this, MyService.class);
        startService(intent);
        Log.i("Try","App ID = " + intent.getStringExtra("MyID"));
    }
}

我还有一个生成ID的服务。

public class MyService extends Service
{
    public void onStartCommand(Intent intent, int flags, int startId)
    {
         intent.putExtra("MyID", getID);
    }

    public String getID()
    {
        //code to generate ID
        return ID;
    }
}

我的问题是我需要将ID从MyService传递到MyApp,但Log指出“App ID = null”。

2 个答案:

答案 0 :(得分:0)

您有几个选择:

  1. 绑定到服务并通过调用mService.getID()获取您的ID(请参阅:http://developer.android.com/guide/components/bound-services.html以了解绑定服务);

  2. 从您的服务中发送本地广播,在目标附加内容中传递生成的ID。在您想要捕获广播的任何地方注册BroadcastReceiver(请参阅示例代码:how to use LocalBroadcastManager?)。

答案 1 :(得分:0)

有很多选择:

  • 使用服务对象本身(作为单身人士)。
  • 使用AIDL。
  • 使用Intents。
  • BroadCast Receiver