我开启了服务做后天网络请求,与服务器交互,但是每次退出程序都会报空指针,我在activity的onDestroy中有关闭的service的
@Override
protected void onDestroy() {
Intent intent = new Intent(this, UpdateData.class);
stopService(intent);
unregisterReceiver(receiver);
super.onDestroy();
}
service部分代码
public int onStartCommand(Intent intent, int flags, int startId) {
String action = intent.getAction();
//没有网络情况下,发送广播
if (!new NetworkUtil(getApplication()).isNetworkConnected()) {
sendBroadcastNetWorkFail();
} else {
//执行更新news操作
if (MainActivity.ACTION_NEWS_UPDATE.equals(action)) {
Log.i(getClass().getSimpleName(), "update news service start");
updateNews();
} else if (MainActivity.ACTION_CHECK_VERSION.equals(action)) {
//执行检测版本信息操作
checkVersion();
} else if (MainActivity.ACTION_SKILL_UPDATE.equals(action)) {
//更新skill界面
updateSkills();
} else if (MainActivity.ACTION_RANK_UPDATE.equals(action)) {
//更新排名
updateRank();
} else if (MainActivity.ACTION_SKILL_MAP.equals(action)){
//更新分布图
updateSkillsMap();
}
}
return super.onStartCommand(intent, flags, startId);
}
String action = intent.getAction();
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
Service.onStartCommand()默认返回START_STICKY,会在Service被系统kill的时候重启调用onStartCommand()并且传入null的Intent。如果你不需要自动重启Service,Service.onStartCommand()返回 START_NO_STICKY就可以了
START_STICKY_COMPATIBILITY已经改成这个常量了,谢谢你。意思就是退出后系统还用调用startCommand(),是不是理论上我还可以在让他做点缓存操作。