react-native与android原生交互启动service,里面写了个定时任务,退出登录后重新登录,程序竟然崩溃了?!好坑啊~查看崩溃日志发现,报以下错误:java.lang.IllegalStateException: TimerTask is scheduled already,什么原因?

原来同一个定时器任务只能被放置一次,也就是说TimerTask是一次性的,用完了就得扔,要用的话需要重新new一个新的TimerTask出来。

百度找到了解决方法~

原来的写法:

    ...    TimerTask task = new TimerTask() {        @Override        public void run() {            Message message = new Message();            message.what = 1;            handler.sendMessage(message);        }    };    ...    @Override    public int onStartCommand(Intent intent, int flags, int startId) {        mTimer = new Timer();        mTimer.schedule(task, 1000, 600000);        return super.onStartCommand(intent, flags, startId);    }    ...

更改后写法:

    ...    class RequestTimerTask extends TimerTask {        public void run() {            Message message = new Message();            message.what = 1;            handler.sendMessage(message);            mTimer.cancel();        }    }    ...    @Override    public int onStartCommand(Intent intent, int flags, int startId) {        mTimer = new Timer();        mTimer.schedule(new RequestTimerTask(), 1000, 600000);        return super.onStartCommand(intent, flags, startId);    }    ...

参考文章java.lang.IllegalStateException: TimerTask is scheduled already问题分析

经测试,bug完美解决~

更多相关文章

  1. android应用集成google登录
  2. 如何在MSM中实现Android震动系统
  3. Android(安卓)SharedPreferences存储的正确写法
  4. android中使用 定时更新界面定时器Timer的使用
  5. 关于Android(安卓)Studio升级到3.4.2版本后的坑
  6. 【Android】论ViewHolder存在的意义
  7. 【Android】入门案例(一)——简单登录
  8. cocos2d-x 3.0 引用第三方库 及编译成apk时android mk文件写法
  9. android前端与php后端连接(以登录为例)

随机推荐

  1. andorid padding margin
  2. android中Layoutopt的使用
  3. android技术要点梳理
  4. React-Native之打包发布(Android)
  5. 使用User Agent分辨出Android设备类型的
  6. 4.4以上android沉浸式
  7. 在 Android 模拟器中启用摄像头支持
  8. Android 基础总结:(十)ContentResolver
  9. Android之UI学习篇二:TextVeiw显示表情和
  10. Android中Intent传递对象的两种方法(Seri