相关疑难解决方法(0)

如何在android中设置计时器

在android中设置计时器以启动任务的正确方法是什么(我创建的一个不会改变UI的功能)?使用Java方式:http: //docs.oracle.com/javase/1.5.0/docs/api/java/util/Timer.html

或者在android(android的处理程序)中有更好的方法?

android

165
推荐指数
8
解决办法
41万
查看次数

Android计时器更新文本视图(UI)

我正在使用计时器来制作秒表.计时器通过增加整数值来工作.我想通过不断更新textview在活动中显示此值.

这是我尝试更新活动的textview服务的代码:

protected static void startTimer() {
    isTimerRunning = true; 
    timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            elapsedTime += 1; //increase every sec
            StopWatch.time.setText(formatIntoHHMMSS(elapsedTime)); //this is the textview
        }
    }, 0, 1000);
}
Run Code Online (Sandbox Code Playgroud)

关于在错误的线程中更新UI,我遇到了一些错误.

如何调整我的代码来完成不断更新textview的任务?

java android timer

47
推荐指数
3
解决办法
7万
查看次数

计时器和报警管理器之间的区别

我对Android 有点困惑TimerAlarmManager使用.

它们之间的主要区别是什么?

他们都计划每隔A秒运行一次任务.他们首选使用的主要方案是什么?

例如,对于X情况,Timer另一方面使用,对于Y情况,请使用AlarmManager.

java android

19
推荐指数
1
解决办法
1万
查看次数

java.util.Timer:它已被弃用了吗?

我在评论中读到了这个答案以及许多其他关于java.util.Timer不推荐使用的调度(抱歉,没有引用)的问题.我真的希望不要因为我使用它作为在Java中安排事情的轻松方式(并且它工作得很好).但如果它被弃用了,我会去别处看看.但是,快速查看1.6API文档并没有说明它被弃用的任何内容.在Sun的弃用清单中甚至没有提到它.

是否正式弃用*如果是这样,我应该使用什么呢?


*另一方面,如果它没有被弃用,那么人们是否可以停止对这个无辜且精彩实施的集合类进行诋毁?

java timer

17
推荐指数
4
解决办法
1万
查看次数

暂停计时器,然后继续

请参阅@Yuri从此处发布的代码.如何在一定次数后停止计时器 .如果我想因某些条件而停止它,然后再重新启动它.我该怎么做呢?

    private final static int DELAY = 10000;
    private final Handler handler = new Handler();
    private final Timer timer = new Timer();
    private final TimerTask task = new TimerTask() {
        private int counter = 0;
        public void run() {
            handler.post(new Runnable() {
                public void run() {
                    Toast.makeText(MainActivity.this, "test", Toast.LENGTH_SHORT).show();
                }
            });
            if(++counter == 4) {
                timer.cancel();
            }

    //do some stuff in my app
   //restart the timer again

        }
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        timer.schedule(task, …
Run Code Online (Sandbox Code Playgroud)

java android timer

16
推荐指数
2
解决办法
6万
查看次数

设备处于休眠状态时可运行的Android计时器

我正在编写一个体育应用程序,需要跟踪季度/半/周期的流逝时间.经过的时间需要精确到秒.即使用户通过按下电源按钮明确地将设备置于睡眠模式,游戏时钟也需要继续运行.

我第一次尝试使用Handler.postDelayed()来触发每200ms的时钟滴答和WindowManager.LayoutParms.FLAG_KEEP_SCREEN_ON,以确保屏幕超时不会停止"时钟".但我很快了解到,这是可以通过按下电源按钮手动把睡觉的装置来规避这种方法.此外,postDelayed()方法正在经历一些时钟漂移,显然是在run()方法中花费的时间的结果.实际数字仍然是准确的,但不是对齐,例如,在用户容易理解的5秒边界上 - 所涉及的定时器开始漂移,导致一些可理解的用户混淆.

经过一番研究后,我找到了使用服务,java定时器,AlarmManagerPartialWakeLock来实现定时器的技术.服务本身不能解决与设备进入睡眠状态相关的问题.Java定时器(如服务)无法解决设备进入休眠状态的问题.AlarmManager似乎是一个很好的方法,但我担心这不适合使用AlarmManager(即报警之间的间隔非常短).使用PartialWakeLock也看起来很有希望,但它本身并没有解决时钟漂移问题,我遇到了.

我将尝试组合AlarmManager和PartialWakeLock.我们的想法是,AlarmManager将有助于对抗时钟漂移和PartialWakeLock,以帮助保持代码简单(手指交叉).我希望这种方法能够在节能,代码复杂性和用户期望之间取得合理的平衡.任何意见是极大的赞赏.

谢谢,

丰富

android timer clock reliability persistent

13
推荐指数
1
解决办法
7036
查看次数

如何在Android中的TextView中显示计时器?

我想设置这个textview:

<TextView
    android:id="@+id/timer"
    android:layout_width="100dp"
    android:layout_height="30dp"
    android:layout_above="@+id/directions"/>
Run Code Online (Sandbox Code Playgroud)

做个计时器.因此,文本应该是一个计时器,如0:30然后0:29 ...持续30秒.一旦计时器是0:00,我可以调用另一种方法; 我可以打印出"再试一次"并重启计时器.

java xml android timer

5
推荐指数
3
解决办法
2万
查看次数

Android计时器:postDelayed与计划

请不要暂停,请不要标记为重复,请回答我!我需要每200毫秒完成一些东西,我需要它平滑而均匀.要做的任务是中等重量(在两种情况下,问题1和2).搜索定时器看起来像社区的最佳解决方案是使用处理程序,runnable和postDelayed(),(Android计时器?操作方法?).

更新的问题:

- 如果我必须与UI,postDelayed()或schedule()/ scheduleAtFixedRate()进行交互,那么哪种方式最精确,最快?

- 如果我不需要与UI,postDelayed()或schedule()/ scheduleAtFixedRate()进行交互,那么哪种方式最准确,最快?

- 两种方式可以在主进程上执行还是在单独的进程上执行?怎么样 ?

谢谢.一些例子......

这样我有mainclass本地对象,但它是一个新线程吗?这是一个很好的实践吗?

timer.schedule( new TimerTask() {           
        @Override
        public void run() {
                    textview.setText(str);
                    //other stuff            
                                     }
            }, 0, 200);
Run Code Online (Sandbox Code Playgroud)

接下来是另一个有计划,任务是在一个单独的任务,而不是计时器本身,我猜,我不能直接与UI交互,我猜...

timer.schedule( new aclass(), 0, 200);
Run Code Online (Sandbox Code Playgroud)

处理方式(来自Dave.B):

Handler timerHandler = new Handler();
Runnable timerRunnable = new Runnable() {
    @Override
    public void run() {
        TextView.setText(str);
        // other stuff
        timerHandler.postDelayed(this, 500); }
};

@Override
public void onCreate(Bundle savedInstanceState) {
...
timerHandler.postDelayed(timerRunnable, 0);
}
Run Code Online (Sandbox Code Playgroud)

android timer

4
推荐指数
1
解决办法
9855
查看次数

创建一个定期发送HTTP请求的定时器 - Android

我想结束从Android设备到Web服务器的HTTP请求,并定期检查数据库的特定数据(每分钟一次).我无法为此实现计时器.

谢谢

android

3
推荐指数
1
解决办法
6945
查看次数

android中的Java Timer

怎么能在android中完成?

public final Timer timer = new Timer(10, new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {  
          // Do task here       
        }
    });
Run Code Online (Sandbox Code Playgroud)

我需要能够调用timer.start(); 来自计时器所在的活动.

java android timer

3
推荐指数
1
解决办法
2万
查看次数

在Android中使用单个计时器与多个计时器来调度TimerTask

我想我不完全了解TimerTimerTask在Java和Android中的工作方式。现在,我定义了许多定期任务,这些任务要在计时器中安排。

我想知道我应该使用单个计时器来安排任务,还是为每个任务使用不同的计时器实例?计时器有自己的线程吗?预定任务是否在新线程中执行?后台发生了什么?

这些方法之间有什么区别?

方法1的样例代码

private void initTasks() {
    TimerTask task1 = new MyTimerTask1();
    TimerTask task2 = new MyTimerTask2();
    TimerTask task3 = new MyTimerTask3();
    Timer timer = new Timer();
    timer.schedule(task1, 0, TASK1_PERIOD);
    timer.schedule(task2, 0, TASK2_PERIOD);
    timer.schedule(task3, 0, TASK3_PERIOD);
}

class MyTimerTask1 extends TimerTask {
    public void run() {
        //do task1
    }
}

class MyTimerTask2 extends TimerTask {
    public void run() {
        //do task2
    }
}

class MyTimerTask3 extends TimerTask {
    public void run() {
        //do …
Run Code Online (Sandbox Code Playgroud)

java multithreading android timer timertask

2
推荐指数
1
解决办法
5868
查看次数

在Android中重复任务

我尝试定期切换屏幕亮度低和高(1s),我认为这段代码应该工作:

SystemClock.sleep(1000);
params.screenBrightness = 0;
getWindow().setAttributes(params);


SystemClock.sleep(1000);
params.screenBrightness = 1;
getWindow().setAttributes(params);
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这些代码,但它只完成了第二个代码(如果扩展代码,则完成最后一个代码)(即亮度= 1).因为我对此表示怀疑所以我把一个变量int i = 0,然后在每个sleep函数之后输入i ++,它显示我毕竟i = 2(通过显示字符串).我认为Android完成了总和,但我的屏幕只是对最后一个设置做出反应,而不是中间命令.你知道为什么会这样,我怎么能切换屏幕亮度?

我也尝试使用"for"循环,但没有运气.

希望尽快收到您的意见.

干杯,

android

1
推荐指数
1
解决办法
2626
查看次数

如何在两个活动中的共享首选项中存储时间

当我的用户玩游戏时,我想将他们锁定30秒钟。我正在尝试使用SharedPreferences。我对SP不太熟悉,也不完全知道如何使用它。所以应该看起来像这样

ifGameOver(){

//lock the game for 30 seconds 
//send users to main menu until 30seconds is over

}
Run Code Online (Sandbox Code Playgroud)

然后在主菜单上,我希望能够随着30秒的下降而看到TextView的计数。所以在这里我会getLong或某事(?)。谁能对此有所启示?

java android

1
推荐指数
1
解决办法
32
查看次数

标签 统计

android ×12

java ×8

timer ×8

clock ×1

multithreading ×1

persistent ×1

reliability ×1

timertask ×1

xml ×1