Android AppWidget - 如何缓存我自己的 class?
Android AppWidget - how to cache my own class?
我正在开发一个 AppWidget
来检索 JSON url 并显示它。我还显示了小部件上次更新的时间 TextView
,显示类似 "last updated: 9.00am" 的内容。注意这里应该是相对时间,也就是我不想显示"last updated: 27/8/2015 9.00am"。如果小部件一天没有更新,它应该显示"last updated: yesterday"。
存在互联网连接时没有问题,但是当没有互联网连接时,我想继续显示以前的结果并更新 "last updated" TextView
,即计算现在之间的相对时间字符串以及上次更新的时间。我如何缓存这些信息?
受到 this widget 的启发,我正在使用自定义 ClientCache.java class
import android.util.SparseArray;
public class ClientCache
{
private static SparseArray<ChannelFeedData> cache = new SparseArray<ChannelFeedData>();
private ClientCache() {}
public static void update(int appWidgetId, ChannelFeedData cfd)
{
cache.put(appWidgetId, cfd);
}
public static ChannelFeedData fetch(int appWidgetId)
{
return cache.get(appWidgetId);
}
public static void remove(int appWidget)
{
cache.remove(appWidget);
}
public static boolean isCached(int appWidget)
{
return fetch(appWidget) != null;
}
}
我的 ChannelFeedData
class 包含一个在检索时存储的方法,但调用 isCached
returns false
如果小部件在与此同时。
即使我的 AppWidget
被系统杀死并不时恢复,我如何缓存我自己的 class?
也许使用 SharedPreferences
SharedPreferences pref = context.getSharedPreferences("pref_name", Context.MODE_PRIVATE);
pref.edit().putString("update_key", "data to be saved"); //save data
pref.edit().commit();
String s = pref.getString("update_key", "empty"); //get data
我正在开发一个 AppWidget
来检索 JSON url 并显示它。我还显示了小部件上次更新的时间 TextView
,显示类似 "last updated: 9.00am" 的内容。注意这里应该是相对时间,也就是我不想显示"last updated: 27/8/2015 9.00am"。如果小部件一天没有更新,它应该显示"last updated: yesterday"。
存在互联网连接时没有问题,但是当没有互联网连接时,我想继续显示以前的结果并更新 "last updated" TextView
,即计算现在之间的相对时间字符串以及上次更新的时间。我如何缓存这些信息?
受到 this widget 的启发,我正在使用自定义 ClientCache.java class
import android.util.SparseArray;
public class ClientCache
{
private static SparseArray<ChannelFeedData> cache = new SparseArray<ChannelFeedData>();
private ClientCache() {}
public static void update(int appWidgetId, ChannelFeedData cfd)
{
cache.put(appWidgetId, cfd);
}
public static ChannelFeedData fetch(int appWidgetId)
{
return cache.get(appWidgetId);
}
public static void remove(int appWidget)
{
cache.remove(appWidget);
}
public static boolean isCached(int appWidget)
{
return fetch(appWidget) != null;
}
}
我的 ChannelFeedData
class 包含一个在检索时存储的方法,但调用 isCached
returns false
如果小部件在与此同时。
即使我的 AppWidget
被系统杀死并不时恢复,我如何缓存我自己的 class?
也许使用 SharedPreferences
SharedPreferences pref = context.getSharedPreferences("pref_name", Context.MODE_PRIVATE);
pref.edit().putString("update_key", "data to be saved"); //save data
pref.edit().commit();
String s = pref.getString("update_key", "empty"); //get data