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 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序