美文网首页
react-native启动android service bu

react-native启动android service bu

作者: sybil052 | 来源:发表于2017-07-26 15:31 被阅读0次

    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完美解决~

    相关文章

      网友评论

          本文标题:react-native启动android service bu

          本文链接:https://www.haomeiwen.com/subject/olqokxtx.html