我在我的应用中下载了一个视频 . 我希望在1周后删除该视频 . 由于我的应用程序也可以脱机工作,我们无法跟踪服务器的时间 . 我们如何知道内容是否已过期,以便之后可以删除?我们不能依赖系统时间,因为用户可以随时更改它 .
可以通过多种方式实现 . 一种方法是使用持久性数据库,如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);
希望能帮助到你!!
2 回答
可以通过多种方式实现 . 一种方法是使用持久性数据库,如sharepreferences .
将视频下载日期保存在共享偏好中,视频名称为关键 . 并在应用程序中编写逻辑,这样一来,每当应用程序打开时,1)检查已保存的视频日期与今天日期2)删除过期的视频 .
你可以使用SharedPreference .
试试这个:
现在来自你的活动
无论你下载视频的哪个地方都会像这样开始会话
希望能帮助到你!!