6.后台任务封装

后台任务封装:在没有网络的时候也可以修改用户名、头像等操作
  1. private void doOk() {
  2. String text = etName.getText().toString().trim();
  3. if (TextUtils.isEmpty(text)) {
  4. ToastUtil.show(getActivity(), "名字不能为空");
  5. return;
  6. }
  7. // 数据更新
  8. account.setName(text);
  9. dao.updateAccount(account);
  10. String url = "http://192.168.1.101:8080/ChatServer/user/name";
  11. Map<String, String> headers = new HashMap<String, String>();
  12. headers.put("account", account.getAccount());
  13. headers.put("token", account.getToken());
  14. Map<String, String> parameters = new HashMap<String, String>();
  15. parameters.put("name", text);
  16. // 1. 将请求加入到后台任务
  17. // 1) 封装
  18. NetTask request = new NetTask();
  19. request.setUrl(url);
  20. request.setMethod(0);
  21. request.setHeaders(headers);
  22. request.setParameters(parameters);
  23. // 2) 序列化
  24. String outPath = DirUtil.getTaskDir(getActivity()) + "/"
  25. + System.currentTimeMillis();
  26. try {
  27. SerializableUtil.write(request, outPath);
  28. } catch (Exception e) {
  29. e.printStackTrace();
  30. }
  31. // 3) 存储到数据库记录
  32. BackTask task = new BackTask();
  33. task.setOwner(account.getAccount());
  34. task.setPath(outPath);
  35. task.setState(0);
  36. new BackTaskDao(getActivity()).addTask(task);
  37. // 开启服务
  38. getActivity().startService(
  39. new Intent(getActivity(), BackgroundService.class));
  40. // 2. 页面跳转
  41. Intent intent = new Intent(getActivity(), HomeActivity.class);
  42. startActivity(intent);
  43. getActivity().finish();
  44. }

原文地址:https://www.cnblogs.com/sixrain/p/5188140.html