服务在 CountDownTimer 中无法正常工作

Service doesn't work properly in CountDownTimer

我正在创建一个使用 CountDownTimer 的应用程序。 我想使用服务方法在后台正确运行 CountDownTimer。

但是,在我的代码实现中,它不能正常工作。

服务未在 Toast 中显示文本,并且可能未正确发送意图至 activity。 我应该在 MyService class 中使用这段 CountDownTimer 代码吗? 有人可以帮我解决这个问题吗?

这是MainActivity.java

public class MainActivity extends ActionBarActivity {

    Button btnStart, btnStop;
    TextView textViewTime;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnStart = (Button) findViewById(R.id.btnStart);
        btnStop = (Button) findViewById(R.id.btnStop);
        textViewTime = (TextView) findViewById(R.id.textViewTime);

        textViewTime.setText("00:01:30");

        final CounterClass timer = new CounterClass(90000, 1000);
        btnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                timer.start();
            }
        });

        btnStop.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                timer.cancel();
            }
        });
        }

    public class CounterClass extends CountDownTimer {

        public CounterClass(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        @Override
        public void onTick(long millisUntilFinished) {
            long millis = millisUntilFinished;
            String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millis),
                    TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
                    TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
            System.out.println(hms);
            textViewTime.setText(hms);

        }

        @Override
        public void onFinish() {
            textViewTime.setText("Completed.");
        }
    }

    public void startService(View view)
    {
        Intent intent = new Intent(this,MyService.class);
        startService(intent);
    }

    public void stopService(View view)
    {
        Intent intent = new Intent(this,MyService.class);
        stopService(intent);
    }


}

这是MyService.java

public class MyService extends Service {



    @Override
    public void onCreate() { // initial performance (setup service in this method)
        super.onCreate();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {  // create start a service

        Toast.makeText(this,"Service Started...",Toast.LENGTH_LONG).show();



        return START_STICKY;
        //return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {  // stop a service

        Toast.makeText(this,"Service Destroyed...", Toast.LENGTH_LONG).show();

        //super.onDestroy();
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {  
        return null;
    }
}
 btnStart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
startService(v);
            timer.start();
        }
    });

    btnStop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
stopService(v);
            timer.cancel();
        }
    });
    }