service中onStartCommand的intent.getStringExtra("XXXXXXX");报空指针错误,求解

浪迹黑杰克 2016-08-07 09:58:20
启动service的代码如下:
Intent intent = new Intent(this, UpdataAvatarService.class);
intent.putExtra("avatarURL", avatarURL);
intent.putExtra("userid", userid);
intent.putExtra("personid", personid);
intent.putExtra("token", token);
startService(intent);

service的onStartCommand方法获取数据的代码是:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
avatarURL = intent.getStringExtra("avatarURL");
userid = intent.getStringExtra("userid");
personid = intent.getStringExtra("personid");
token = intent.getStringExtra("token");
.................
}


在avatarURL = intent.getStringExtra("avatarURL");这一句就报错了,所以我感觉是intent为空,可是怎么可能是空呢?
请大家指教!!!
...全文
438 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT_ZJYANG 2016-08-09
  • 打赏
  • 举报
回复
引用 2 楼 lh0304123457 的回复:
[quote=引用 1 楼 IT_ZJYANG 的回复:] 首先,楼主确认下service是否在Androidmainfest.xml中已注册 如果注册了,可以试一下这样: if(intent != null){ avatarURL = intent.getStringExtra("avatarURL"); userid = intent.getStringExtra("userid"); personid = intent.getStringExtra("personid"); token = intent.getStringExtra("token"); ...... }
肯定是注册了 这个逻辑用了有一段时间了 昨天友盟统计到的错误 这个参数有可能为空吗? 我没看过源码所以不太清楚[/quote]有的,Service在你的进程退出后有可能被系统自动重启,这个时候调用onStartCommand的时候传进来的intent就会是null.
浪迹黑杰克 2016-08-09
  • 打赏
  • 举报
回复
引用 6 楼 IT_ZJYANG 的回复:
[quote=引用 2 楼 lh0304123457 的回复:] [quote=引用 1 楼 IT_ZJYANG 的回复:] 首先,楼主确认下service是否在Androidmainfest.xml中已注册 如果注册了,可以试一下这样: if(intent != null){ avatarURL = intent.getStringExtra("avatarURL"); userid = intent.getStringExtra("userid"); personid = intent.getStringExtra("personid"); token = intent.getStringExtra("token"); ...... }
肯定是注册了 这个逻辑用了有一段时间了 昨天友盟统计到的错误 这个参数有可能为空吗? 我没看过源码所以不太清楚[/quote]有的,Service在你的进程退出后有可能被系统自动重启,这个时候调用onStartCommand的时候传进来的intent就会是null.[/quote] 有道理 谢谢啦
哎,真难 2016-08-08
  • 打赏
  • 举报
回复
这个你要debug看看intent传进来没有
a81658804 2016-08-08
  • 打赏
  • 举报
回复
应该是进程被杀了, 系统自动重起导致的,试试 return super.onStartCommand(intent, Service.START_REDELIVER_INTENT, startId);
浪迹黑杰克 2016-08-08
  • 打赏
  • 举报
回复
用了很久,就出现过一次报错 所以很难复现。。。
浪迹黑杰克 2016-08-07
  • 打赏
  • 举报
回复
引用 1 楼 IT_ZJYANG 的回复:
首先,楼主确认下service是否在Androidmainfest.xml中已注册 如果注册了,可以试一下这样: if(intent != null){ avatarURL = intent.getStringExtra("avatarURL"); userid = intent.getStringExtra("userid"); personid = intent.getStringExtra("personid"); token = intent.getStringExtra("token"); ...... }
肯定是注册了 这个逻辑用了有一段时间了 昨天友盟统计到的错误 这个参数有可能为空吗? 我没看过源码所以不太清楚
IT_ZJYANG 2016-08-07
  • 打赏
  • 举报
回复
首先,楼主确认下service是否在Androidmainfest.xml中已注册 如果注册了,可以试一下这样: if(intent != null){ avatarURL = intent.getStringExtra("avatarURL"); userid = intent.getStringExtra("userid"); personid = intent.getStringExtra("personid"); token = intent.getStringExtra("token"); ...... }

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧