2016-08-17 7 views
0

ユーザーが操作を実行してから1時間以上が経過しているかどうかを確認しようとしています。アンドロイドでアプリが開いてから1時間が経過していることを確認しますか?

現在、私はsharedpreferencesに日付/時刻を格納しています。そして、ユーザーが再びアクティビティをヒットすると、sharedprefの時刻を現在の時刻でチェックします。たとえば、ユーザーが今日の午前10時にアプリで何かをして明日午前3時に戻った場合、1時間以上経過したかどうかを知りたいと思うでしょう。

私は運が悪いので、たくさんの答えを試しました。 sharedpref時刻がtimeInMiliとの日付 '8/17/16'として保存されているようです。どんな助けも素晴らしいだろう。

活動方法:私はlogcatをチェックすると

lastConfigCheck = prefs.getString("LAST_CONFIG_CHECK_DATE", null); 



    if (lastConfigCheck == null) { 

     lastConfigCheck = String.valueOf(System.currentTimeMillis()); 

     editor.putString("LAST_CONFIG_CHECK_DATE", lastConfigCheck); 
     editor.apply(); 

     Log.d("hellohours", lastConfigCheck); 

    } 

    else { 

     long todaysTime = System.currentTimeMillis(); 

     Long timeElapsed = todaysTime - Long.valueOf(lastConfigCheck); 

     if (timeElapsed > 120000) { 

      Log.d("hellohours", "boom digity"); 

     } else { 

      Log.d("hellohours", "boom awesome"); 
     } 

    } 

、それはのように述べているその行

Long timeElapsed = todaysTime - Long.valueOf(lastConfigCheck); 

原因:このから

"java.lang.NumberFormatException: Invalid long: "8/17/2016"' 
+1

@サムマナスは正しい答えを出して働いた。しかし、すべての変数が正しいタイプのものであることを確認することを指摘したい。私が問題を抱えていた理由は、「ロング」を使用していたはずのときに「ロング」を使用していたからです。 – AndroidDev21921

答えて

3

値:

System.currentTimeMillis() 

がLongとして返されます。そのため、共有環境設定で値を保存するようにしてください。

editor.putLong("LAST_CONFIG_CHECK_DATE", System.currentTimeMillis()); 

参考:これが行われるとDeveloper Forum

は、あなたが任意の変換を行う必要はありませんし、数学的な操作は簡単だろう。

関連する問題