hwaphon 2016-05-02 07:59 采纳率: 50%
浏览 1286

在 Fragment 中调用 Service 执行下载任务,但是失败了,代码如下,请问下是为什么啊

public class JokeFragment extends Fragment implements ServiceConnection, SendCallBack {

        private RecyclerView mRecyclerView;
        private RecyclerAdapter mAdapter;
        private List<JokeData> mJokeDatas = new ArrayList<>();
        private JokeService mService;

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
        }

        @Override
        public void onActivityCreated(@Nullable Bundle savedInstanceState) {
                super.onActivityCreated(savedInstanceState);
                Intent intent = new Intent(getActivity().getApplicationContext(), JokeService.class);
                getActivity().getApplicationContext().bindService(intent, this, Context.BIND_AUTO_CREATE);
        }

        @Override
        public void onResume() {
                super.onResume();
                mAdapter.notifyDataSetChanged();
        }

        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                View view = inflater.inflate(R.layout.fragment_joke, container, false);
                mRecyclerView = (RecyclerView) view.findViewById(R.id.fragment_recyclerview);
                mAdapter = new RecyclerAdapter(getActivity(), mJokeDatas);
                mRecyclerView.setItemAnimator(new DefaultItemAnimator());
                mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
                mRecyclerView.setHasFixedSize(true);
                mRecyclerView.setAdapter(mAdapter);
                return view;
        }

        @Override
        public void onResult(List<JokeData> datas) {
                mJokeDatas = datas;
        }

        @Override
        public void onError(String info) {
        }

        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
                mService = ((JokeService.LocalBinder) service).getService();
                if (mService!=null){
                        mService.setCallBack(this);
                        mService.Download();
                }

        }

        @Override
        public void onServiceDisconnected(ComponentName name) {
                mService = null;
        }

        @Override
        public void onPause() {
                super.onPause();
                if (mService != null) {
                        mService.setCallBack(null);
                        getActivity().getApplicationContext().unbindService(this);
                }
        }
}
  • 写回答

1条回答

  • 恋恋西风 2016-05-02 10:37
    关注
     if (mService != null) {
                        mService.setCallBack(null);
                        getActivity().getApplicationContext().unbindService(this);
                }
    
                                放 在OnDestory()中试试
    
    评论

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料