0

我在我的应用程序中下载了一个视频。我想在 1 周后删除该视频。由于我的应用程序也可以离线运行,因此我们无法从服务器跟踪时间。我们如何知道内容是否已过期,以便之后可以将其删除?我们不能依赖系统时间,因为用户总是可以改变它。

4

2 回答 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);

希望能帮助到你!!

于 2017-06-21T08:10:19.960 回答
0

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

将视频下载日期保存在共享首选项中,以视频名称为键。并在应用程序中编写逻辑,这样,每天打开应用程序一次,1)检查保存的视频日期与今天的日期2)删除过期的视频。

于 2017-06-21T08:04:53.937 回答