适用于所有活动的Android计数计时器

时间:2013-02-18 06:09:14

标签: android timer

我正在创建一个包含大约20个活动的应用程序,并且我希望在活动1开始时完成计数计时器并完成对最后一个活动的计数。我找到了一种方法来创建一个子类并在1个活动中调用计时器但是我不知道如何将计时器的值从活动1传递到活动2和从2传递到3。这是我的代码

子类

package com.mytimer;

import java.lang.ref.WeakReference;

import java.util.TimerTask;
import android.os.Handler;

import android.widget.TextView;



public class IncrementTask extends TimerTask {

    WeakReference<TextView> mRef;
    int counter = 0;
    Handler handler = new Handler();

    public IncrementTask(TextView text) {
        mRef = new WeakReference<TextView>(text);
    }

    public void run() {
        handler.post(new Runnable() {
            public void run() {
                mRef.get().setText("counter " + counter);
                counter++;
            }
        });
    }
}

在我的活动1中

TextView mTextView = (TextView)findViewById(R.id.text);
        Timer timer = new Timer();
        IncrementTask task = new IncrementTask(mTextView);
        timer.scheduleAtFixedRate(task, 0, 1000);

        Button btn = (Button)findViewById(R.id.button1);
        btn.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent i = new Intent (MainActivity.this, Page2.class);
                startActivity(i);

            }       
        });

我想知道如何将计时器的值传递给下一个活动,而不是从0开始计时器 任何帮助,请

2 个答案:

答案 0 :(得分:2)

在我看来,使用Fragments而不是Activity,因为如果使用片段,它可以在屏幕上显示两个包含计时器和剩余内容的片段。

如果您使用活动,则当您从一次屏幕移动到另一个屏幕时,无法显示准确的计时器值。

答案 1 :(得分:0)

您如何开始后续活动?我想使用startActivity()或startActivivtForResult(),如果是这种情况,你会冷却在intent中传递时间。 但这不是一个好的解决方案,因为在这个过程中你会“浪费时间”,因为活动的凝视并不精确到第二个。 为什么不创建一个在流程结束时开始并在结束时结束的计时器活动?