Android 我得到;未知服务启动结果“;多意图错误

Android 我得到;未知服务启动结果“;多意图错误,android,service,android-intent,Android,Service,Android Intent,我正试图用活动发送的意图调用服务的某些功能 这是我从活动(在UI线程中)发送意图的方式: 这就是我的onStartCommand在MyService中的样子: @Override public int onStartCommand (Intent intent, int flags, int startId){ super.onStartCommand(intent, flags, startId); if(intent.getAction().eq

我正试图用活动发送的意图调用服务的某些功能

这是我从活动(在UI线程中)发送意图的方式:

这就是我的onStartCommand在MyService中的样子:

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

       if(intent.getAction().equals(INTENT_ACTIVITY_START)){
        Toast.makeText(this,"onStartCommand ...", Toast.LENGTH_SHORT).show();
       }else if(intent.getAction().equals(INTENT_ACTIVITY_POSITION_CHANGED)){
        // here comes some code to get extras from intent
        Log.d("INTENT_ACTIVITY_POSITION_CHANGED", "x=" + posX + " y=" + posY);
        //TODO preveri
       }
       return startId;
    }
打了几次电话后,我得到:

ERROR/ActivityManager(52): java.lang.IllegalArgumentException: Unknown service start result: 4

为什么会出现这个错误?有什么想法吗?

你为什么认为你应该返回startId?onStartCommand()的文档如下

意向提供给startService的意向(意向),如给定。这 如果服务正在运行,则可能为null 进程结束后重新启动 他离开了,它以前也回来过 除了 启动粘性兼容性

标记有关此启动请求的附加数据。当前为0, 启动\u标志\u重新交付,或 开始\标记\重试

startId表示此特定请求的唯一整数 开始与stopSelfResult(int)一起使用。 返回

* The return value indicates what semantics the system should use for
服务的当前启动状态。 它可能是常数之一 与 开始\u延续\u掩码位


因此,您需要返回START_STICKY,或者是中的一个值,为什么您认为应该返回
startId
?onStartCommand()的文档如下

意向提供给startService的意向(意向),如给定。这 如果服务正在运行,则可能为null 进程结束后重新启动 他离开了,它以前也回来过 除了 启动粘性兼容性

标记有关此启动请求的附加数据。当前为0, 启动\u标志\u重新交付,或 开始\标记\重试

startId表示此特定请求的唯一整数 开始与stopSelfResult(int)一起使用。 返回

* The return value indicates what semantics the system should use for
服务的当前启动状态。 它可能是常数之一 与 开始\u延续\u掩码位


因此,您需要返回START_STICKY或

Hehe中的一个值。谢谢您的快速回答。我仍然在了解android,错误的返回值对我来说并不明显。不用担心。我听起来像个傻瓜,但这不是针对个人的。谢谢你的快速回答。我仍然在了解android,错误的返回值对我来说并不明显。不用担心。我听起来像个傻瓜,但这不是针对个人的