如何从Android服务获取数据?
问题描述:
我具有延伸应用如何从Android服务获取数据?
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;
}
}
我的问题是我需要将MyService中的ID传递给MyApp,但日志状态为“App ID = null”。
答
你有两个选择:
绑定到服务,并通过调用mService.getID()让你的ID(参见:http://developer.android.com/guide/components/bound-services.html了解绑定服务);
从您的服务发送一个本地广播通过生成的ID在意图额外。将广播接收器注册到您想要接收广播的任何地方(请参阅示例代码:how to use LocalBroadcastManager?)。
答
有很多选择:
- 使用服务对象本身(如单身)。
- 使用AIDL。
- 使用Intents。
- BroadCast接收器
+0
你能给我一个基于上面代码的意图示例吗? –
你能给我一个基于上面代码的例子吗? –
我需要我的服务无限期地在后台运行,但是developer.android声明绑定服务不会。 –
我认为,对于您的情况,第二种方法更好,因为ID生成可能需要一些时间,并且在启动服务后您将无法获得正确的值。 –