我的项目中有一个视频下载器类,它从给定的URL下载视频,并在下载完成时将首选项保存为true。我检查首选项是否在另一个类中为了从其路径获取视频以进行回放。下载程序首先检查文件是否按如下方式下载:
string isVideoDownloaded = Utils.readPreferences(ctx, video.getUrl(), "false");
bool isVideoAvailable = Boolean.Parse(isVideoDownloaded);
下载完成后,将执行以下代码。
activity.RunOnUiThread(() =>
{
Utils.savePreferences(ctx, video.getUrl(), "true");
});
首选项以下列方式保存:
public static void savePreferences(Context activity, string key, string defaultValue)
{
ISharedPreferences sp = PreferenceManager.GetDefaultSharedPreferences(activity.ApplicationContext);
ISharedPreferencesEditor editor = sp.Edit();
editor.Clear();
editor.PutString(key, defaultValue);
editor.Commit();
}
在播放视频之前,请使用以下方法检查首选项:
private bool isVideoDownloaded(Video video)
{
string isVideoDownloaded = Utils.readPreferences(context, video.getUrl(), "false");
bool isVideoAvailable = Boolean.Parse(isVideoDownloaded);
if (isVideoAvailable)
{
//If video is downloaded then hide its progress
hideProgressSpinner(video);
return true;
}
showProgressSpinner(video);
return false;
}
但是首选项始终返回为false。我使用相同的上下文来进行下载回报。这段代码在我第一次编写时工作,但现在每次都返回false。 我是android的初学者,所以我很难弄清楚我在这里做错了什么以及如何解决它。
我能做些什么才能让它发挥作用?任何帮助表示赞赏。
答案 0 :(得分:1)
在savePerference
方法中删除editor.Clear()
public static void savePreferences(Context activity, string key, string defaultValue)
{
ISharedPreferences sp = PreferenceManager.GetDefaultSharedPreferences(activity.ApplicationContext);
ISharedPreferencesEditor editor = sp.Edit();
// editor.Clear(); comment this line of code
editor.PutString(key, defaultValue);
editor.Commit();
}