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