Android创建的e定时器也在后台运行

Android创建的e定时器也在后台运行,android,android-intent,android-activity,timer,background,Android,Android Intent,Android Activity,Timer,Background,我需要创建一个计时器(带启动和停止功能),它也可以在后台继续工作,因为: -我的应用程序有2个活动可通过intent切换,因此如果我返回活动1,计时器必须继续工作,如果我返回活动2(计时器的活动),则“textview”必须更新继续工作的计时器 -如果我把应用程序放在后台,计时器必须继续工作。 我该怎么做? 我发现了这个,但我不确定它是否能满足我的需要: 谢谢 要使计时器在后台工作,请使用Asynctask。然后,如果需要,您可以使用RunOnUiThread方法(或独立线程,如果您愿意)从As

我需要创建一个计时器(带启动和停止功能),它也可以在后台继续工作,因为: -我的应用程序有2个活动可通过intent切换,因此如果我返回活动1,计时器必须继续工作,如果我返回活动2(计时器的活动),则“textview”必须更新继续工作的计时器 -如果我把应用程序放在后台,计时器必须继续工作。 我该怎么做? 我发现了这个,但我不确定它是否能满足我的需要:


谢谢

要使计时器在后台工作,请使用Asynctask。然后,如果需要,您可以使用RunOnUiThread方法(或独立线程,如果您愿意)从Asynctask的doinBackground函数切换前台活动。

通过
Java.util.Timer
Java.util.TimerTask
使用计时器的标准Java方式在Android中运行良好,但是您应该知道,这个方法会创建一个新线程

您可以考虑使用非常方便的处理程序类<代码>(Android .OS.汉德勒)< /C>并通过<代码> SeNeMaseAdTime[ANDROID.OS.消息,long ] 或<代码> SeDeMasaGeDeleDead(ANDROID.OS.消息,long < /COD>)向处理程序发送消息。收到消息后,可以运行所需的任务。第二种选择是创建一个可运行对象,并通过处理程序的函数

posttime(java.lang.Runnable,long)
postDelayed(java.lang.Runnable,long)对其进行调度。

对于重复任务:

private final int interval = 1000; // 1 Second
private Handler handler = new Handler();
Private Runnable runnable = new Runnable(){
    public void run() {
        Toast.makeText(MyActivity.this, "C'Mom no hands!", Toast.LENGTH_SHORT).show();
    }
};
...
handler.postAtTime(runnable, System.currentTimeMillis()+interval);
handler.postDelayed(runnable, interval);
private final int EVENT1 = 1; 
private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {         
        case Event1:
            Toast.makeText(MyActivity.this, "Event 1", Toast.LENGTH_SHORT).show();
            break;

        default:
            Toast.makeText(MyActivity.this, "Unhandled", Toast.LENGTH_SHORT).show();
            break;
        }
    }
};
新计时器().scheduleAtFixedRate(任务、之后、间隔); 对于单个任务运行:

private final int interval = 1000; // 1 Second
private Handler handler = new Handler();
Private Runnable runnable = new Runnable(){
    public void run() {
        Toast.makeText(MyActivity.this, "C'Mom no hands!", Toast.LENGTH_SHORT).show();
    }
};
...
handler.postAtTime(runnable, System.currentTimeMillis()+interval);
handler.postDelayed(runnable, interval);
private final int EVENT1 = 1; 
private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {         
        case Event1:
            Toast.makeText(MyActivity.this, "Event 1", Toast.LENGTH_SHORT).show();
            break;

        default:
            Toast.makeText(MyActivity.this, "Unhandled", Toast.LENGTH_SHORT).show();
            break;
        }
    }
};
新计时器().计划(任务,之后)

任务是要执行的方法 在初始执行时间之后 (重复执行的间隔时间)

处理程序:

private final int interval = 1000; // 1 Second
private Handler handler = new Handler();
Private Runnable runnable = new Runnable(){
    public void run() {
        Toast.makeText(MyActivity.this, "C'Mom no hands!", Toast.LENGTH_SHORT).show();
    }
};
...
handler.postAtTime(runnable, System.currentTimeMillis()+interval);
handler.postDelayed(runnable, interval);
private final int EVENT1 = 1; 
private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {         
        case Event1:
            Toast.makeText(MyActivity.this, "Event 1", Toast.LENGTH_SHORT).show();
            break;

        default:
            Toast.makeText(MyActivity.this, "Unhandled", Toast.LENGTH_SHORT).show();
            break;
        }
    }
};
消息:

private final int interval = 1000; // 1 Second
private Handler handler = new Handler();
Private Runnable runnable = new Runnable(){
    public void run() {
        Toast.makeText(MyActivity.this, "C'Mom no hands!", Toast.LENGTH_SHORT).show();
    }
};
...
handler.postAtTime(runnable, System.currentTimeMillis()+interval);
handler.postDelayed(runnable, interval);
private final int EVENT1 = 1; 
private Handler handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {         
        case Event1:
            Toast.makeText(MyActivity.this, "Event 1", Toast.LENGTH_SHORT).show();
            break;

        default:
            Toast.makeText(MyActivity.this, "Unhandled", Toast.LENGTH_SHORT).show();
            break;
        }
    }
};

这可能会帮助您: