OneLinee 2018-06-30 01:04 采纳率: 40%
浏览 830
已结题

ohhttp请求服务器以后,根据结果,开启一个服务,在其他页面取消这个服务,但对线程有疑惑

我用okhttp请求服务器,在得到结果以后,根据结果内容,开启一个服务,服务是用来进行一个倒计时功能的,
我是在okhttp里的

                            public void onResponse(Call call, Response response) throws IOException {
                                Looper.prepare();
                                String str=response.body().string();
                                /**
                                 * 根据服务器返回结果弹出Toast
                                 */
                                if (str.equals("预约成功")){
                                    Toast.makeText(mContext,str,Toast.LENGTH_SHORT).show();
                                    /**
                                     * 定时任务,闹钟提醒
                                     */
                                    ShareUtils.putString(mContext.getApplicationContext(),"ROOMNUMBER",POsition);
                                    ShareUtils.putString(mContext.getApplicationContext(),"SEATNMBER",number);
                                    //***************
                                    Intent intent1=new Intent(mContext, MyService.class);
                                    mContext.startService(intent1);
                                    //***************
                                }else {
                                    Toast.makeText(mContext,str,Toast.LENGTH_SHORT).show();
                                }



                                /**
                                 *
                                 */
                                Looper.loop();
                            }

但我感觉这个方法不是在子线程里面运行吗?我在这个里面开启的服务,能关闭吗?
我是想在一个fragment里面,关闭这个服务,但是我关闭服务的代码写在主线程了,
两个不一样的线程开启服务,关闭服务能行吗?

 handler =new Handler(){
            @Override
            public void handleMessage(Message msg) {
               switch (msg.what){
                   case 9:
                       //关掉预约成功之后计时的服务
                       Intent stopIntent = new Intent(getActivity(),MyService.class);
                       getActivity().stopService(stopIntent);

                       Toast.makeText(getContext(),"签到成功",Toast.LENGTH_SHORT).show();
                       //*******
                       SHUJUKU();
                       //********
                       //ShareUtils.putBoolean(getContext().getApplicationContext(),"married",true);
                       ShareUtils.putBoolean(getContext().getApplicationContext(),"married",true);
                       SharedPreferences.Editor editor4 = getContext().getSharedPreferences("data", Context.MODE_PRIVATE)
                               .edit();
                       editor4.putString("STATE", "1");
                       editor4.apply();
                       onResume();
                       break;

我想在这里关闭这个服务,请问我目前这样写能达到我想要的效果吗?

我如果在第一个请求结果里面也用hander处理,在hander里面来开启这个服务会怎样呢?

  • 写回答

2条回答 默认 最新

  • oyljerry 2018-06-30 06:45
    关注

    只要拿到正确的context,就可以关闭服务

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)