0

これが可能かどうかはわかりませんが、いくつかのアクティビティがあり、現時点では 2 つです。プレイヤーがゲームを終了するまでの時間制限は 20 分です。問題は、彼が 1 つの活動から始めて、別の活動に行くということです。別のアクティビティでもタイマーを動かし続け、textView で表示し続ける方法は?

ミンハズの編集:

public void getTime(long value, String PREFERENCE_NAME){
        SharedPreferences myPrefs = mContext.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
        SharedPreferences.Editor prefsEditor = myPrefs.edit();
        prefsEditor.putLong("time", value);
        prefsEditor.commit();
    }
4

3 に答える 3

1

グローバル タイマー クラスを作成するだけです。

class Timer {
    private static long startTime = -1;

    public static void reset() {Timer.startTime = -1;}
    public static void initialize() {Timer.startTime = System.currentTimeMillis();}
    public static long getTimeMillis() {return System.currentTimeMillis() - startTime;}

    private Timer() {}
}

次に、このクラスを (どこに置いても) インポートすることで、現在の時刻にアクセスできます。

于 2013-04-24T17:13:40.570 に答える
0

あるアクティビティからタイマーを開始し、ユーザーが次のアクティビティに切り替えると、インテント内の値を渡します

Intent intent=new Intent(Current.class, NextActivity.class);
intent.putExtra("time", timer_value);

そして、別のアクティビティで値を取得します

time_value=intent.getLongExtra("time")

このようにして、アクティビティ呼び出しの開始が非同期であるため、アクティビティ間で遅延がある場合、ユーザーはバッファ時間を取得します。finsh()その時点からの要件に基づいて、電話をかけたり、他のことをしたりできます。

アプリの起動からの時間を制限したい場合は、Applicationクラスを拡張することも良い解決策です。しかし、それは正確には総プレイ時間ではありません。

更新: データを保存するために、要件に基づいて永続ストレージを使用できます。現時点では、共通の好みが有力な候補のように見えます。

データの保存

    SharedPreferences myPrefs = mContext.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
    SharedPreferences.Editor prefsEditor = myPrefs.edit();
    prefsEditor.putLong("time", value);
    prefsEditor.commit();

データを取得する

SharedPreferences sharedPref = mContext.getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
return sharedPref.getLong("time", 0);
于 2013-04-24T17:14:36.930 に答える
0

Lukas が述べたように、 Application を拡張するといいでしょう。

タイマーが開始された時刻を保存する設定を使用することもできます...

しかし、タイマーの開始時刻を操作するのが最善の方法だと思います。

于 2013-04-24T17:09:09.373 に答える