Отслеживать время в андроид

Я загрузил видео в своем приложении. Я хотел удалить это видео через 1 неделю. Так как мое приложение также работает в автономном режиме, мы не можем отслеживать время с сервера. Как мы узнаем, истек ли срок содержания, чтобы после этого его можно было удалить? Мы не можем полагаться на системное время, так как пользователь всегда может его изменить.

2 ответа

Можно достичь разными способами. Одним из способов является использование постоянной базы данных, например, sharepreferences.

Сохраните дату загрузки видео в общих настройках с именем видео в качестве ключа. и написать логику в приложении таким образом, чтобы ежедневно один раз, когда приложение открывалось, 1) проверять даты сохраненных видео с сегодняшней датой 2) удалять просроченные видео.

Вы можете использовать SharedPreference для этого.

Вот попробуйте это:

public class SessionManager {

    private static final String TAG = "SessionManager";
    // Shared Preferences
    SharedPreferences pref;

    // Editor for Shared preferences
    SharedPreferences.Editor editor;

    // Context
    Context _context;

    // Shared pref mode
    int PRIVATE_MODE = 0;

    // Sharedpref file name
    private static final String PREF_NAME = "MyPref";
    public static final String KEY_DOWNLOAD_TIME = "login_time";

    public static final String KEY_DELETE_TIME = "logOut_time";

 // Constructor
    public SessionManager(Context context){
        this._context = context;
        pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
        editor = pref.edit();
    }
/**
     * Create session
     * */
    public void createLoginSession(String downloadTime, String deleteTime){

        //storing downloadTime in pref
        editor.putString(KEY_DOWNLOAD_TIME,downloadTime);

        //storing loginTime in pref
        editor.putString(KEY_DELETE_TIME,deleteTime);

        // commit changes
        editor.commit();
    }

 /**
     * Get stored session data
     * */
    public HashMap<String, String> getUserDetails(){
        HashMap<String, String> user = new HashMap<>();


        //user download time
        user.put(KEY_DOWNLOAD_TIME, pref.getString(KEY_DOWNLOAD_TIME, null));

        //user delete time
        user.put(KEY_DELETE_TIME, pref.getString(KEY_DELETE_TIME, null));

        // return user
        return user;
    }
}

Теперь из вашей деятельности

SessionManager session;
 private Calendar calendar;
    private SimpleDateFormat df;
 protected void onCreate(Bundle savedInstanceState) {
         calendar = Calendar.getInstance();
        String template = "yyyy-MM-dd HH:mm:ss";
        df = new SimpleDateFormat(template, Locale.getDefault());
        session = new SessionManager(getApplicationContext());
        HashMap<String, String> user = session.getUserDetails();
        String deleteTime = user.get(SessionManager.KEY_DELETE_TIME);
        String currentTime = df.format(calendar.getTime());
         if (currentTime.compareTo(deleteTime)>=0){
               //session expired delete video
            }
            else {
                //session is still active don't delete
            }

}

И где бы вы ни загружали видео, начинайте сессию вот так

String downloadTime = df.format(calendar.getTime());
calendar.add(Calendar.DAY_OF_YEAR,7);
String deleteTime = df.format(calendar.getTime());
session.createLoginSession(downloadTime, deleteTime);

Надеюсь, поможет!!

Другие вопросы по тегам