0

こんにちは、アプリを起動してからSystem.currentTimeMillisどれくらいの期間アプリを使用しているかを知るために起動するアプリケーションがあります。正常に動作します

しかし、私がやりたいのは、保存されたミリ秒を現在のシステムミリ秒に追加することです。そのため、データをロードすると、停止したところから続行されます。

long starttime = System.currentTimeMillis(), millis;
int seconds, minutes, hours;

final Handler h = new Handler(new Callback() 
{
  public boolean handleMessage(Message msg) 
  {

           millis = System.currentTimeMillis() - starttime;
           seconds = (int) (millis / 1000);
           minutes = seconds / 60;
           hours = minutes / 60;
           seconds = seconds % 60;
           minutes = minutes % 60;


       playtime.setText(String.format("%d:%02d:%02d", hours, minutes, seconds));
       return false;
    }
});
class firstTask extends TimerTask 
{
     @Override
     public void run() 
     {
         h.sendEmptyMessage(0);
     }
};
Timer timer = new Timer();
4

3 に答える 3

0

基本的に、各セッションで費やした時間を保存し、それを以前の測定に追加することなどが必要です. 共有設定は、これを行うための優れた方法です。私の提案は、次のようなクラスを作成することです。

public class AppPreferences {
    private static final String APP_SHARED_PREFS = "com.your.app";

    private SharedPreferences appSharedPrefs;
    private Editor prefsEditor;


    /**
     * 
     * @param context
     */
    public AppPreferences(Context context) {
        this.appSharedPrefs = context.getSharedPreferences(APP_SHARED_PREFS,
                Activity.MODE_PRIVATE);
        this.prefsEditor = appSharedPrefs.edit();

    }
}

そして、クラス内に次のようなメソッドを配置します。

public void saveTimeSpentOnSession(long time){

    long timeSpentSoFar = getTimeSpentSoFar()
    // or you can do
    // long timeSpentSoFar = appSharedPrefs.getLong("timeSpent",0);
    prefsEditor.putLong("timeSpent",time+timeSpentSoFar);
    prefsEditor.commit();

}

public long getTimeSpentSoFar(){
    return appSharedPrefs.getLong("timeSpent",0);
}

put / get メソッドを呼び出したいときはいつでも、次のようにこのクラスのインスタンスを作成するだけです。

AppPreferences prefs = new AppPreferences(getApplicationContext()); // in an activity

そして電話する

prefs.saveTimeSpentOnSession(yourTime);
于 2013-08-03T20:27:19.100 に答える
0

SharedPreferencesを利用するためのサンプルプログラムを説明します。

Android プロジェクトを作成します。

さて、ここに私のMainActivity.javaがあります

import android.os.Bundle;
import android.preference.PreferenceManager;
import android.app.Activity;
import android.content.SharedPreferences;
import android.view.Menu;
import android.widget.Toast;

public class MainActivity extends Activity {

    SharedPreferences pref;
    long uptime,starttime,endtime;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // now, I'm getting app uptime in seconds.
         pref = PreferenceManager.getDefaultSharedPreferences(this);
        Toast.makeText(this, "Up time:"+pref.getString("time", "0"), Toast.LENGTH_SHORT).show();
         uptime=Long.parseLong(pref.getString("time", "0"));
         starttime = System.currentTimeMillis()/1000;

    }
    @Override
    protected void onDestroy() {
        endtime=System.currentTimeMillis()/1000;
        uptime=uptime+(endtime-starttime);
        final SharedPreferences.Editor editor = pref.edit();
        editor.putString("time", ""+uptime);
        editor.commit();
        super.onDestroy();
    }



}
于 2013-08-03T15:38:17.147 に答える