在android eclipse中创建第二个计数器

时间:2015-02-08 13:09:03

标签: java android eclipse

我正在制作一个简单的Android应用程序应该有一个计数器,从60秒到0秒。我有一个想法如何去做,但我不确定它是否是最聪明的方法。而且我不确定如何让它在代码中运行。

思想: 在.xml文件中,我添加了textView。我会创建扩展Service的MyService类,它将由OnCreate函数中的.java文件调用(因为我希望计数立即开始)。 MyService将每秒更改textView的内容(我将有一个int计数器,它将每秒减少,然后textView的文本将被更改)。

有没有更好的方法呢?

这是MyService类:

  public class MyService extends Service {

        //for timer:
        int counter = 0;

        static final int UPDATE_INTERVAL = 1000;
        private Timer timer = new Timer();

        @Override
        public IBinder onBind(Intent arg0) {
            return null;
        }


        @Override
        public int onStartCommand(Intent intent, int flags, int startId) {
            doSomethingRepeatedly();
            return START_STICKY;
        }


        private void doSomethingRepeatedly() {
            timer.scheduleAtFixedRate( new TimerTask() {
                public void run() {

                 //code for changing the content

                }
            }, 0, UPDATE_INTERVAL);
        }

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

            //za timer
            if (timer != null){
                timer.cancel();

            }
        }
    }

我是否必须将此代码放在单独的.java文件中?

我不确定如何编写代码来更改textView的内容,因为我不确定我是否可以调用textView的id,因为它位于单独的文件中?

这些是启动服务的功能:

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

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

我必须把它们放在哪里?

1 个答案:

答案 0 :(得分:3)

使用CountDownTimer

  

安排倒计时,直到将来的时间,定期   沿途的间隔通知。显示30的示例   文本字段中的第二个倒计时:

 new CountDownTimer(30000, 1000) {

     public void onTick(long millisUntilFinished) {
         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
     }

     public void onFinish() {
         mTextField.setText("done!");
     }
  }.start();
  

对onTick(long)的调用将同步到此对象   在前一次回调之前不会发生对onTick(long)的调用   完成。这只是执行时的相关内容   onTick(long)需要一段时间才能执行,这很重要   与倒计时间隔相比。