-2

In my application i want use one thread into CountDownTimer and for this i write below code.

But when run application after a few seconds show me error in LogCat.

My codes:

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_auction_detail_bid, null);
        new CountDownTimer(newCalculateTime, 1000) {

            public void onTick(long millisUntilFinished) {
                if (millisUntilFinished / 1000 <= newCanOfferBeforeTime) {
                    Constants.currentActivity.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            getlast6BidData();
                        }
                    });
                }
            }

            public void onFinish() {

            }

        }.start();

return v;
}

    private void getlast6BidData() {
        thread = new Thread() {
            @Override
            public void run() {
                getUpdateBidsList(Constants.detailAuctionGmodel.getRes().getDetail().getCalculate_end());
                try {
                    sleep(last6RunStartTimer);
                    getlast6BidData();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }
        };
        thread.start();
    }

LogCat error :

E/UncaughtException: java.lang.IllegalThreadStateException
                                                                            at java.lang.Thread.start(Thread.java:722)
                                                                            at com.app.android.Fragments.AuctionDetailBidFragment.getlast6BidData(AuctionDetailBidFragment.java:744)
                                                                            at com.app.android.Fragments.AuctionDetailBidFragment.access$100(AuctionDetailBidFragment.java:73)
                                                                            at com.app.android.Fragments.AuctionDetailBidFragment$12.run(AuctionDetailBidFragment.java:737)

How can i fix it?

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
fghj
  • 11
  • 1
  • 2

1 Answers1

1

Try this just check that your thread is alive or not using Thread.isAlive() method.

private void getlast6BidData() {
        thread = new Thread() {
            @Override
            public void run() {
                getUpdateBidsList(Constants.detailAuctionGmodel.getRes().getDetail().getCalculate_end());
                try {
                    sleep(last6RunStartTimer);
                    getlast6BidData();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }
        };

       if (!thread.isAlive()){
          thread.start();
       }
    }

EDIT

getActivity().runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            getlast6BidData();
                        }
                    });
Goku
  • 9,102
  • 8
  • 50
  • 81