将数据从服务传递到服务启动的活动

时间:2016-04-18 08:35:37

标签: android android-activity service

我想做的是将数据从服务S传递到活动A.

但是,在我的情况下,A没有启动S然后等待它的答案:S总是在后台运行。

我想使用附加了捆绑包的Intent,因为我的数据是字符串和布尔值。

我不知道如何继续完成这项工作。 (我已经阅读了有关BroadcastReceiver和其他内容的信息)。

以下是我在服务中启动活动的时间:

public void answerFromServer(ArrayList<Contact> listeDemand, ArrayList<Contact> listeAccepted){

    Intent intent = new Intent(getApplicationContext(), UpdateContactActivity.class);
    Bundle bundle = new Bundle();

    ArrayList<String> listAllDemandName = new ArrayList<>();
    ArrayList<Integer> listAllDemandId = new ArrayList<>();
    int i = 0;

    ArrayList<String> listAllAccName = new ArrayList<>();
    ArrayList<Integer> listAllAccId = new ArrayList<>();
    int j = 0;

    for(Contact contact : listeDemand){
        String string = contact.getName();
        int Id = contact.getId();
        Boolean online = contact.isOnline();
        listAllDemandName.add(string);
        listAllDemandId.add(Id);
        bundle.putBoolean("onlineD" + Integer.toString(i), online);
        i++;
    }

    for(Contact contact : listeAccepted){
        String string = contact.getName();
        int Id = contact.getId();
        Boolean online = contact.isOnline();
        listAllAccName.add(string);
        listAllAccId.add(Id);
        bundle.putBoolean("onlineA" + Integer.toString(j), online);
        j++;
    }

    bundle.putStringArrayList("nameDemandList", listAllDemandName);
    bundle.putIntegerArrayList("idDemandList", listAllDemandId);
    bundle.putStringArrayList("nameAccList", listAllAccName);
    bundle.putIntegerArrayList("idAccList", listAllAccId);

    intent.putExtra("contactRequest", bundle);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);

    android.support.v4.app.NotificationCompat.Builder mBuilder =
            new android.support.v4.app.NotificationCompat.Builder(getBaseContext())
                    .setSmallIcon(R.drawable.user_jaune)
                    .setContentTitle("RG 2.1")
                    .setContentText("Mise(s) à jour contact")
                    .setContentIntent(pendingIntent)
                    .setDeleteIntent(pendingIntent)
                    .setAutoCancel(true);
    NotificationManager mNotificationManager =
            (NotificationManager) getBaseContext().getSystemService(Context.NOTIFICATION_SERVICE);
    mNotificationManager.notify(50, mBuilder.build());

谢谢,

1 个答案:

答案 0 :(得分:0)

  

就像你说的那样。我不知道在S发布A

时如何读取A中的值

真正导致A发射的原因并不重要。所有数据都在捆绑中,因此onCreate()中的这类内容可以解决您的问题:

Bundle contactRequest;

Bundle extras = getIntent().getExtras();
if (extras != null) {
   contactRequest = extras.getBundle("contactRequest");

   // then get all the stuff you placed there the same way
   idAccList = contactRequest .getIntegerArrayList("idAccList");

   ...
}