倒計時終結版-關於快遞櫃倒計時

//在Basefragment
    private static final int RUNNER_MSG_CODE = 100;
    private long timeflag;
    private int recLen = 60;
    public static int FRAGMENTALL = 0; //1.取件 2.寄件 3.快遞員 4.管理員
    public static int BOXALL = 0; //1爲寄件開箱子 2爲快遞員開箱子
    protected int deep = 0;
    protected Toast toast = null;

    public BaseFragment()
    {

    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        FragmentManager fm = getFragmentManager();
        System.out.println("" + fm);
        fm.addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener()
        {
            @Override
            public void onBackStackChanged()
            {
                if (BaseFragment.this.isVisible()) {
                    startTimer();
                } else {
                    stopTimer();
                }
            }
        });
    }

    protected abstract void callbackTime(int time);

    public void backOnce()
    {
        getFragmentManager().popBackStackImmediate();

    }

    public void backToAll()
    {
        for (int i = 0; i < getFragmentManager().getFragments().size() - 1; i++) {
            getFragmentManager().popBackStack();
        }

    }


    public void start(SupportFragment toFragment)
    {
        start(toFragment, STANDARD);

    }


    protected int startTimer()
    {
        recLen = 60;
        callbackTime(recLen);
        mhandler.removeMessages(RUNNER_MSG_CODE);
        Message msg = Message.obtain();
        msg.what = RUNNER_MSG_CODE;
        msg.obj = runnable;
        mhandler.sendMessageDelayed(msg, 1000);
        Log.e("startTimer", "startTimer");
        return recLen;
    }

    private void stopTimer()
    {
        try {
            if (toast != null) {
                toast.cancel();
            }
        } catch (Exception e) {
        }
        mhandler.removeMessages(RUNNER_MSG_CODE);
        recLen = -1;
        Log.e("stopTimer", "stopTimer");

    }


    public void reStartTimer()
    {
        recLen = 60;

    }

    private Handler mhandler =
            new Handler(Looper.getMainLooper())
            {
                @Override
                public void handleMessage(Message msg)
                {
                    if (msg.what == RUNNER_MSG_CODE) {
                        this.post((Runnable) msg.obj);
                    }
                }
            };
    Runnable runnable = new Runnable()
    {
        @Override
        public void run()
        {
            recLen--;
            callbackTime(recLen);
            if (recLen == 0) {
                mhandler.removeMessages(RUNNER_MSG_CODE);
                // backOnce();
                backToAll();
                // Log.e("BaseFragment","BaseFragment=="+recLen);
            } else if (recLen > 0) {
                Message msg = Message.obtain();
                msg.what = RUNNER_MSG_CODE;
                msg.obj = runnable;
                mhandler.sendMessageDelayed(msg, 1000);
                //  Log.e("BaseFragment","BaseFragment=="+recLen);
            } else if (recLen < 0) {
                mhandler.removeMessages(RUNNER_MSG_CODE);
                //  Log.e("BaseFragment","BaseFragment=="+recLen);
            }

        }
    };

}
相關文章
相關標籤/搜索