倒数计时器的随机空指针 onTick

Random null pointer onTick of countdowntimer

我的问题源于我的倒计时服务 class。 onTick 方法抛出随机空指针。足够随机,很难捕捉到,但每次都会使应用程序崩溃。 这是倒计时服务的代码 class

  @Override  
     public void onCreate() {
      super.onCreate();

    stopNotify();

    Log.i(TAG, "Starting timer...");

    cdt = new CountDownTimer(900000, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            long millis = millisUntilFinished;
            String hms = String.format("%02d:%02d",
                    TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
                    TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
            MainActivity.tv.setText(hms);
            Log.i(TAG, "Countdown seconds remaining: " + millisUntilFinished / 1000);
            bi.putExtra("countdown", millisUntilFinished);
            sendBroadcast(bi);
        }

        @Override
        public void onFinish() {
            Log.i(TAG, "Timer finished");

            showNotification();

            savepref();



            Intent intent = new Intent(BroadcastService.this, MainActivity.class);


            intent.putExtra("id1",id1);

            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);


            startActivity(intent);





        }
    };

    cdt.start();
}



@Override
public void onDestroy() {
    cdt.cancel();
    Log.i(TAG, "Timer cancelled");
    super.onDestroy();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    return START_STICKY;
}

@Override
public IBinder onBind(Intent arg0) {

    return null;
}

更多代码 代码!!

       private BroadcastReceiver br = new 
      BroadcastReceiver() 
      { 
       @Override
      public void onReceive(Context context, Intent intent) {
        updateGUI(intent); // or whatever method used to 
        update your GUI fields
        }
        };

       private void updateGUI(Intent intent) {
        if (intent.getExtras() != null) {
        long millisUntilFinished = 
        intent.getLongExtra("countdown", 0);
          Log.i(TAG, "Countdown seconds remaining: " + 
          millisUntilFinished / 1000);
             }
          }

不过,我不知道你的其余代码,但显然问题出在这一行

MainActivity.tv.setText(hms);

我猜,"tv"代表一个文本视图,你已经在MainActivity中的一个静态变量中获取了它。这变为空..