Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中关闭计时器?_Java_Android_Timer_Timertask - Fatal编程技术网

Java 如何在android中关闭计时器?

Java 如何在android中关闭计时器?,java,android,timer,timertask,Java,Android,Timer,Timertask,嗨,在我的编码中,我需要创建一个计时器任务来执行一些函数,这个函数调用了多次,所以在运行同一个任务之前,我需要缓存旧的正在运行的任务并再次启动这个计时器。我已经使用了特性dcouponrotationtimer.cancel()但它不工作,我在logcate中遇到一些错误 public void startPagerRotationTimer(){ featuredCouponRotationTimer.cancel(); featuredCouponRotationTimer

嗨,在我的编码中,我需要创建一个计时器任务来执行一些函数,这个函数调用了多次,所以在运行同一个任务之前,我需要缓存旧的正在运行的任务并再次启动这个计时器。我已经使用了
特性dcouponrotationtimer.cancel()但它不工作,我在logcate中遇到一些错误

public void startPagerRotationTimer(){

    featuredCouponRotationTimer.cancel();
    featuredCouponRotationTimer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            if(!isBeingTouched){
                ActivityMain.getActivityMain().runOnUiThread(new Runnable() {
                    public void run() {

                     Log.i("pagerDurationFeaturedCoupons","setData :working");

                        }
                    }

                });
            }
        }

    }, 0, 2000);
}
Logcat错误

02-25 20:25:18.210      816-816/com.shoplylabs.shoplys E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.IllegalStateException: Timer was canceled
            at java.util.Timer.scheduleImpl(Timer.java:561)
            at java.util.Timer.scheduleAtFixedRate(Timer.java:528)
            at com.shoplylabs.shoplys.view.ViewContainerFeaturedCoupon.startPagerRotationTimer(ViewContainerFeaturedCoupon.java:190)
            at com.shoplylabs.shoplys.view.ViewContainerFeaturedCoupon.setData(ViewContainerFeaturedCoupon.java:182)
            at com.shoplylabs.shoplys.adapters.AdapterShoplyCouponStaggeredGrid.getView(AdapterShoplyCouponStaggeredGrid.java:156)
            at com.shoplylabs.shoplys.components.staggeredgridview.StaggeredGridView.obtainView(StaggeredGridView.java:1533)
            at com.shoplylabs.shoplys.components.staggeredgridview.StaggeredGridView.fillDown(StaggeredGridView.java:1245)
            at com.shoplylabs.shoplys.components.staggeredgridview.StaggeredGridView.populate(StaggeredGridView.java:846)
            at com.shoplylabs.shoplys.components.staggeredgridview.StaggeredGridView.onLayout(StaggeredGridView.java:797)
            at android.view.View.layout(View.java:15214)
            at android.view.ViewGroup.layout(ViewGroup.java:4793)
            at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1076)
            at android.view.View.layout(View.java:15214)
            at android.view.ViewGroup.layout(ViewGroup.java:4793)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
            at android.view.View.layout(View.java:15214)
            at android.view.ViewGroup.layout(ViewGroup.java:4793)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
            at android.view.View.layout(View.java:15214)
            at android.view.ViewGroup.layout(ViewGroup.java:4793)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1677)
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1531)
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1440)
            at android.view.View.layout(View.java:15214)
            at android.view.ViewGroup.layout(ViewGroup.java:4793)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
            at android.view.View.layout(View.java:15214)
            at android.view.ViewGroup.layout(ViewGroup.java:4793)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
            at android.view.View.layout(View.java:15214)
            at android.view.ViewGroup.layout(ViewGroup.java:4793)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
            at android.view.View.layout(View.java:15214)
            at android.view.ViewGroup.layout(ViewGroup.java:4793)
            at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1076)
            at android.view.View.layout(View.java:15214)
            at android.view.ViewGroup.layout(ViewGroup.java:4793)
            at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:890)
            at android.view.View.layout(View.java:15214)
            at android.view.ViewGroup.layout(ViewGroup.java:4793)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
            at android.view.View.layout(View.java:15214)
            at android.view.ViewGroup.layout(ViewGroup.java:4793)
            at android.support.v7.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:502)
            at android.view.View.layout(View.java:15214)
            at android.view.ViewGroup.layout(ViewGroup.java:4793)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
            at android.view.View.layout(View.java:15214)
            at android.view.ViewGroup.layout(ViewGroup.java:4793)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1677)
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1531)
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1440)
            at android.view.View.layout(View.java:15214)
            at android.view.ViewGroup.layout(ViewGroup.java:4793)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
            at android.view.View.layout(View.java:15214)
            at android.view.ViewGroup.layout(ViewGroup.java:4793)
            at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2260)
            at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2007)
            at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1249)
            at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6364)
            at android.view.Choreographer$CallbackRecord.run(Choreographe

请在我做错的地方帮助我

原因已明确说明:

java.lang.IllegalStateException:计时器已取消


您需要重新初始化
功能UponRotationTimer
对象,以避免
非法状态异常

新代码不建议使用计时器,您应该查看

如果要保留计时器,请使用以下命令:

public void startPagerRotationTimer()
{
    if (featuredCouponRotationTimer != null)
    {
        featuredCouponRotationTimer.cancel();
    }

    featuredCouponRotationTimer = new Timer();
    featuredCouponRotationTimer.scheduleAtFixedRate(
            new TimerTask()
            {
                @Override
                public void run()
                {
                    if (!isBeingTouched)
                    {
                        ActivityMain.getActivityMain().runOnUiThread(
                                new Runnable()
                                {
                                    public void run()
                                    {

                                        Log.i("pagerDurationFeaturedCoupons", "setData :working");
                                    }
                                }
                                                                    );
                    }
                }
            }, 0, 2000);
}

like FeaturedUponRotationTimer=新计时器();FeaturedUponRotationTimer.cancel();取消后不能使用
计时器
实例,因此必须在调用
cancel()
后重新初始化。您可以给出一些示例,或者说我必须在我的编码
featuredCuponRotationTimer.cancel()中添加哪一行吗
featuredUponRotationTimer=新计时器()我已经试过了,我得到了java.lang.NullPointerExceptionno这不起作用2任务正在同时运行第一个任务没有得到取消这是取消计时器的方法。您需要为启动的每个计时器运行此代码(并将它们的引用保留在ArrayList中),my FeaturedUponRotationTimer始终为空,因此它不会取消plz帮助。meI使用ScheduledExecutorService和Singleton模式发布了类似的答案。根据您的帖子和评论,我想这是重新格式化代码的最佳方式。