Android:在应用内的类之间传输一些数据

时间:2014-04-08 20:06:51

标签: android android-intent data-transfer

如何使用意图在应用内的类(活动或服务)之间传输少量数据。 需要清楚显示的活动和服务之间存在差异。在许多不同的答案中,信息分散在许多部分中。许多答案都提供了不正确的服务信息。

1 个答案:

答案 0 :(得分:1)

使用少量数据,可以使用intent将数据从一个类传送到另一个类。在这里,我试着在一个地方展示基本原理。您可以根据需要为自己的意图构建更多复杂性。

发送:来自活动或服务类。密钥名称可以是您想要的任何名称。它必须在引号中。这是接收课中唯一提到的内容。此外,您可以使用"此"或" context"而不是" getApplicationContext()",取决于您的情况。

    Intent i = new Intent(getApplicationContext(), ClassName.class);
    i.putExtra("AnyKeyName1", intName1);  // an int value, no quotes
    i.putExtra("AnyKeyName2", "String Value 1");  // string in quotes
    i.putExtra("AnyKeyName3", StringVariable1);  // string variable, no quotes
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  // other additions
    startService(i);


收到的活动和服务类别不同。

接受活动:

public void onCreate(Bundle bundle) {
    int var1 = getIntent().getIntExtra("AnyKeyName1");
    String var2 = getIntent().getStringExtra("AnyKeyName2");
    String var3 = getIntent().getStringExtra("AnyKeyName3");

接收服务:您不能使用" getIntent()"。您必须提供一个默认值 - 如果意图没有收到任何内容,则将其设置为您想要的值 - 使用默认值时具有很大的灵活性。

public int onStartCommand(Intent intent, int flags, int startId) {
    int var1 = intent.getIntExtra("AnyKeyName1", defaultInt);
    String var2 = intent.getStringExtra("AnyKeyName2", "default String");
    String var3 = intent.getStringExtra("AnyKeyName3", defaultStringVar);