Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在服务之间传递数据(android)_Android_Eclipse_Service_Bundle - Fatal编程技术网

在服务之间传递数据(android)

在服务之间传递数据(android),android,eclipse,service,bundle,Android,Eclipse,Service,Bundle,服务A将一些信息保存在字符串数组“information[]”中。当服务A完成时,它应该启动服务B,服务B应该接收字符串数组。如何做到这一点? 我曾尝试将其打包发送,但似乎无法像通常在活动之间那样获取数据 编辑: 这是我的密码: 服务A,onDestroy Intent is2 = new Intent(this, GatherInformationService.class); is2.putExtra("information", info); startService(is2); 服务B

服务A将一些信息保存在字符串数组“information[]”中。当服务A完成时,它应该启动服务B,服务B应该接收字符串数组。如何做到这一点? 我曾尝试将其打包发送,但似乎无法像通常在活动之间那样获取数据

编辑:

这是我的密码:

服务A,onDestroy

Intent is2 = new Intent(this, GatherInformationService.class);
is2.putExtra("information", info);
startService(is2);
服务B onCreate

Bundle b = new Bundle();
coords = b.getStringArray("information");

一个面向对象的技巧。你可以使你的数组是静态的,你可以在onCreate方法上访问该数组,或者在其他服务(如ClassName.array=Service1.array)中的任何地方访问该数组


谢谢你的OOP技巧。你可以使你的数组成为静态的,你可以在onCreate方法上访问该数组,或者在其他服务(如ClassName.array=Service1.array)中的任何地方访问该数组


谢谢

您可以使用
intent.putExtra
方法:

在服务A中:

Intent intent = new Intent( this, YourTargetService.class );
intent.putExtra("YourExtraName", information );
在服务B onCreate中:

String[] received = getIntnet().getStringArrayExtra("YourExtraName");

这就是应该做的工作

您可以使用
intent.putExtra
方法:

在服务A中:

Intent intent = new Intent( this, YourTargetService.class );
intent.putExtra("YourExtraName", information );
在服务B onCreate中:

String[] received = getIntnet().getStringArrayExtra("YourExtraName");

这就是应该做的工作

我看不出您的字符串数组应该如何存在于您创建的新
Bundle
对象中。似乎您应该将逻辑放入
onStartCommand
方法中,如下所示:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    String[] info = intent.getStringArrayExtra("information");
}

有关详细信息,请参阅《开发人员指南》。

我看不出您的字符串数组应该如何存在于您创建的新
捆绑包中。似乎您应该将逻辑放入
onStartCommand
方法中,如下所示:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    String[] info = intent.getStringArrayExtra("information");
}

有关详细信息,请参阅《开发人员指南》。

这正是我所做的,但它找不到字符串数组。这正是我所做的,但它找不到字符串数组。没有危险,我们在大多数情况下使用应用程序变量,而不是实例变量。服务A何时被销毁?在停止服务时,可以将这些应用程序级变量设置为null。感谢没有危险,我们在大多数情况下使用应用程序变量,而不是实例变量。服务A何时被销毁?在停止服务时,可以将这些应用程序级变量设置为null。ThanksBut OnStart命令不是在onCreate之后调用的吗?主代码不是应该在onCreate中吗?
onStartCommand
将在每次调用服务时被调用,无论服务是否已创建。这个方法应该处理这个调用。相反,
onCreate
对于初始化例程更方便。@Eric我能为您提供进一步的帮助吗?但是onCreate之后不是调用onstart命令吗?主代码不是应该在onCreate中吗?
onStartCommand
将在每次调用服务时被调用,无论服务是否已创建。这个方法应该处理这个调用。相反,
onCreate
对于初始化例程更方便。@Eric,我能为您提供进一步的帮助吗?