Не останавливайте хронометр, когда я изменяю активность - PullRequest
0 голосов
/ 30 марта 2012

Например: в Activty ИИ есть Chronometer, я нажимаю на игру, чтобы начать ее, и когда она прибывает в 00:00:10, я решаю перейти к Activity B. Я остаюсь на ней для За 30 секунд до возвращения в A. Я обнаружил, что таймер остановился и по-прежнему отображает 00:00:10, но мне бы хотелось, чтобы он продолжал работать, а затем в 00:00:40. Как я могу это сделать? Как я могу избежать остановки таймера при изменении Activity?

1 Ответ

1 голос
/ 30 марта 2012

(На основании ответа, данного для Получить время виджета хронометра , с добавлением кода и дополнительной активности.)

Основная деятельность:

package com.so.chilledrat.chronoexample;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.LinearLayout;
import android.widget.Toast;

public class ChronoExampleActivity extends Activity {
    Chronometer mChronometer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);

        mChronometer = new Chronometer(this);
        layout.addView(mChronometer);

        Button startButton = new Button(this);
        startButton.setText("Start");
        startButton.setOnClickListener(mStartListener);
        layout.addView(startButton);

        Button stopButton = new Button(this);
        stopButton.setText("Stop");
        stopButton.setOnClickListener(mStopListener);
        layout.addView(stopButton);

        Button resetButton = new Button(this);
        resetButton.setText("Reset");
        resetButton.setOnClickListener(mResetListener);
        layout.addView(resetButton);

        Button switchButton = new Button(this);
        switchButton.setText("Switch Activity");
        switchButton.setOnClickListener(mSwitchListener);
        layout.addView(switchButton);

        setContentView(layout);
    }

    private void showElapsedTime() {
        long elapsedMillis = SystemClock.elapsedRealtime() - mChronometer.getBase();
        Toast.makeText(this, "Elapsed milliseconds: " + elapsedMillis, Toast.LENGTH_SHORT).show();
    }

    View.OnClickListener mStartListener = new OnClickListener() {
        public void onClick(View v) {
            mChronometer.start();
            showElapsedTime();
        }
    };

    View.OnClickListener mStopListener = new OnClickListener() {
        public void onClick(View v) {
            mChronometer.stop();
            showElapsedTime();
        }
    };

    View.OnClickListener mResetListener = new OnClickListener() {
        public void onClick(View v) {
            mChronometer.setBase(SystemClock.elapsedRealtime());
            showElapsedTime();
        }
    };

    View.OnClickListener mSwitchListener = new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent myIntent = new Intent(ChronoExampleActivity.this.getBaseContext(), OtherActivity.class);
            startActivityForResult(myIntent, 0);
        }
    };
}

Другое действие для переключения на:

package com.so.chilledrat.chronoexample;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;

public class OtherActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout layout = new LinearLayout(this);
        layout.setOrientation(LinearLayout.VERTICAL);

        Button switchButton = new Button(this);
        switchButton.setText("Switch Back");
        switchButton.setOnClickListener(mSwitchListener);
        layout.addView(switchButton);

        setContentView(layout);
    }

    View.OnClickListener mSwitchListener = new OnClickListener() {

        @Override
        public void onClick(View v) {
            // Intent myIntent = new Intent(OtherActivity.this.getBaseContext(),
            // ChronoExampleActivity.class);
            // startActivityForResult(myIntent, 0);
            finish();
        }

    };
}

И, наконец, манифест:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.so.chilledrat.chronoexample"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="7" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".ChronoExampleActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="OtherActivity"></activity>
    </application>

</manifest>
...