我开启了服务做后天网络请求,与服务器交互,但是每次退出程序都会报空指针,我在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(),是不是理论上我还可以在让他做点缓存操作。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。