首页 文章

在android中跟踪时间

提问于
浏览
0

我在我的应用中下载了一个视频 . 我希望在1周后删除该视频 . 由于我的应用程序也可以脱机工作,我们无法跟踪服务器的时间 . 我们如何知道内容是否已过期,以便之后可以删除?我们不能依赖系统时间,因为用户可以随时更改它 .

2 回答

  • 0

    可以通过多种方式实现 . 一种方法是使用持久性数据库,如sharepreferences .

    将视频下载日期保存在共享偏好中,视频名称为关键 . 并在应用程序中编写逻辑,这样一来,每当应用程序打开时,1)检查已保存的视频日期与今天日期2)删除过期的视频 .

  • 0

    你可以使用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);
    

    希望能帮助到你!!

相关问题