dan*_*max 0 service android android-intent
我正在尝试使用从我的活动发送的意图来调用我的服务的某些功能.
这是我从活动发送意图的方式(在UI线程中):
Intent it = new Intent(MyService.INTENT_ACTIVITY_POSITION_CHANGED);
it.setClass(getApplicationContext(), MyService.class);
it.putExtra("posPercentX", x);
it.putExtra("posPercentY", y);
startService(it);
Run Code Online (Sandbox Code Playgroud)
这就是myStartCommand在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;
}
Run Code Online (Sandbox Code Playgroud)
我接到几个电话后:
ERROR/ActivityManager(52): java.lang.IllegalArgumentException: Unknown service start result: 4
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误?任何的想法?
为什么你认为你应该回来startId
?onStartCommand()的文档是
intent 提供给startService(Intent)的Intent,如给定的那样.如果服务在其进程消失后重新启动,则它可能为null,并且之前已返回除START_STICKY_COMPATIBILITY之外的任何内容.
flags 有关此启动请求的其他数据.目前为0,START_FLAG_REDELIVERY或START_FLAG_RETRY.
startId 表示此特定启动请求的唯一整数.与stopSelfResult(int)一起使用. 返回
Run Code Online (Sandbox Code Playgroud)* The return value indicates what semantics the system should use for
服务的当前启动状态.它可能是与START_CONTINUATION_MASK位相关的常数之一
因此,您需要返回START_STICKY或http://developer.android.com/reference/android/app/Service.html#START_CONTINUATION_MASK中的一个值
归档时间: |
|
查看次数: |
1055 次 |
最近记录: |