如果我在服务类上调用bindService后调用startService会发生什么?

时间:2013-06-18 12:11:32

标签: android android-service android-handler

我在Service MessengerService上调用bindService。它工作正常。之后,我打电话给startService。

代码与此链接远程信使服务示例部分完全相同 http://developer.android.com/reference/android/app/Service.html 除了我在活动中添加一个startService

这是客户端代码:         Intent intnt = new Intent(context,MessengerService.class);         intnt.putExtra(“msg”,“从服务到服务器11的活动的字符串”);

    bindService(intnt, mConnection, Context.BIND_AUTO_CREATE);

    intnt.putExtra("msg", "String from activity to service to handler 22");     

    startService(intnt);

在服务代码中: 在onStartCommand中,无论我在startService中传递的意图中收到什么消息,我都将它发送回客户端处理程序。

我在行mClients.get(0).send(msg1)中获得索引超出绑定的异常。 mClients是附加到此服务的客户端数组,在绑定过程中存储。

代码与此链接远程信使服务示例部分完全相同 http://developer.android.com/reference/android/app/Service.html 除了我在服务中添加onStartCommand

@Override
public int onStartCommand(Intent intent, int flags, int startId){

    String str = intent.getStringExtra("msg");
    Message msg1 = Message.obtain(null, MSG_STR_VALUE);
    Bundle data = new Bundle();
    data.putString("message", str);
    msg1.setData(data);

    System.out.println(str);
    try {
        s1.acquire();
    } catch (InterruptedException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    try {
        mClients.get(0).send(msg1);
    } catch (RemoteException e) {
        e.printStackTrace();
    }

    return START_STICKY;
}

2 个答案:

答案 0 :(得分:1)

您可以找到问题here的答案。

Service lifecycle flow chart

  

没有特定的顺序,onStartCommand()和onBind()被称为

我一直在寻找答案,当我跑进你的问题帖子时我很难找到,所以我发布它,因为其他人可能觉得它很有用。

答案 1 :(得分:0)

不管你跑 array[1]pattern = "^[[:space:]]*$" ,一旦调用new <- new_tweetsdf[grep(pattern, new_tweetsdf, invert = TRUE)] ,则需要使用startService() -> bindService()bindService() -> startService()停止它。