当前位置: 首页 > 知识库问答 >
问题:

Android计时器正在使用

微生旻
2023-03-14

Hi plan to development and android countdown timer app for the activity with start and stop button when user click start button display timer countdown and user go to remaining activities when the timer is running background如果用户单击stop,则仅停止计时器。Hi plan to development and android countdown timer app。

如何在服务中运行计时器并在活动android中更新文本视图的时间。

共有1个答案

申屠英韶
2023-03-14

是的,你可以。我给你一个我很久以前用过的代码示例。请记住,这并不是使用按钮,但它将为您提供一个大致的操作方法。此代码使用当前倒计时值更新ActionBar菜单项

这是服务:

public class CountDownTimerService extends Service {
static long TIME_LIMIT = 300000;
CountDownTimer Count;



@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    super.onStartCommand(intent, flags, startId);
    Count = new CountDownTimer(TIME_LIMIT, 1000) {
        public void onTick(long millisUntilFinished) {
            long seconds = millisUntilFinished / 1000;
            String time = String.format("%02d:%02d", (seconds % 3600) / 60, (seconds % 60));

            Intent i = new Intent("COUNTDOWN_UPDATED");
            i.putExtra("countdown",time);

            sendBroadcast(i);
            //coundownTimer.setTitle(millisUntilFinished / 1000);

        }

        public void onFinish() {
            //coundownTimer.setTitle("Sedned!");
            Intent i = new Intent("COUNTDOWN_UPDATED");
            i.putExtra("countdown","Sent!");

            sendBroadcast(i);
            //Log.d("COUNTDOWN", "FINISH!");
            stopSelf();

        }
    };

    Count.start();
    return START_STICKY;
}

@Override
public IBinder onBind(Intent arg0) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public void onDestroy() {
    Count.cancel();
    super.onDestroy();
}}

这是您要更新TextView的活动中需要的必要代码:

startService(new Intent(context, CountDownTimerService.class));
registerReceiver(uiUpdated, new IntentFilter("COUNTDOWN_UPDATED"));
//Log.d("SERVICE", "STARTED!");


private BroadcastReceiver uiUpdated = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
         //This is the part where I get the timer value from the service and I update it every second, because I send the data from the service every second. The coundtdownTimer is a MenuItem
        countdownTimer.setTitle(intent.getExtras().getString("countdown"));

    }
};

希望这有帮助。

 类似资料:
  • 问题内容: 这是我的第一篇文章.. 因此,我正在学习Android和Java(来自Actionscript),并且正在从事以下项目: 我试图单击一个ImageView,让该ImageView交换图像一秒钟,然后返回到原始图像。(这是针对窃听游戏的) 听起来很容易,对吧?我花了整整一天的时间试图让一个标准的Java Timer / TimerTask工作..没有运气.. 有没有更好的办法?我的意思是

  • 我正在编写一个Android应用程序,每10分钟录制一次音频。我用定时器来做这件事。但是scheduleAtFixedRate和scheduleAtFixedRate之间有什么区别呢?使用其中一种方法是否有性能优势?

  • 本文向大家介绍Android计时器chronometer使用实例讲解,包括了Android计时器chronometer使用实例讲解的使用技巧和注意事项,需要的朋友参考一下 在Android中,可以使用计时器来实现对时间的监测,这个类所实现的功能有开始计时,停止计时,重新计时,设置计 时模式,下面列出计时器方法的原型: long getBase();//返回基地的时间,由setBase(long)设

  • 我想通过绘制一条灰色、白色(与背景匹配)的路径,然后再绘制一条灰色的路径来创建闪烁效果。我想闪烁3次,显示灰色1秒,显示白色1秒,再次显示灰色1秒,以此类推。 当我为postDelayed()创建一个时,程序跳过run(),没有在定时集中执行它,也没有发生闪烁: 我如何使用计时器实现这样的闪烁功能,并将其闪烁3次? 谢谢!

  • 我有一个应用程序,有两个定时器开始他们的按钮点击。 当它们开始时,计时器倒计时显示在文本视图中,因此用户可以看到倒计时(10,9,8,7等) 一个计数器是45秒计时器,另一个是30秒计时器。我注意到,当计时器启动时,它们会以两种方式之一运行:计时器倒计时显示从正确的时间开始的秒数(然后跳过一个)45、43、42、41等,或者其他时间不显示开始值,直接跳到(44、43、42、41等),并且不会跳过任