让我的 Android 活动都可以访问的经理 class 处理 cache/data 的基本方法?
A basic way to have cache/data handled by manager class that my Android Activities can all access?
所以我想做的是有几个不同的单一管理器 类 来处理我从互联网上下载的数据的缓存。我希望这些 classes/objects 中的数据可以从我的应用程序中的不同活动访问,从而任何活动都可以根据需要操作数据或调用函数。
例如,我有一个 UserDatabasemanager,我将在其中存储我从互联网上下载的初始原始 JSON 数据和一个用户对象数组,该数组是该 JSON 数据的提炼版本。
我的应用程序会在不同时间从网络上提取数据,并会随着数据的变化更新用户数组。例如,最初下拉符合条件的用户列表。所以我然后将所有用户名和 ID 缓存到用户对象中。如果应用程序随后关注特定的用户页面,它将下载该用户的描述文本并将新描述存储到 User 对象中。 (所有这些我认为我目前无法使用我的编程知识)
我一直在阅读有关通过带有 Parcelable 和 Serializable 的 Intents 发送对象的文章,这似乎有点绕过 Activity 之间共享数据的处理方式。
How to send an object from one Android Activity to another using Intents?
Passing data through intent using Serializable
因为我的意图是将这些 classes/managers/objects(无论我们想怎么称呼它们)用作单个实例,所以我不太在意遵循字母封装,因为它们的工作是提供和更新我的缓存基于活动需求的数据。
我对所有这些 Android/Java 东西仍然很陌生,但似乎这种东西在 C/C++ 中使用指针会相当直接。似乎即使我直接使用 Java 进行编程,我也可以很容易地传递对对象的引用,但是 Activity 的结构似乎不适合在其中轻松传递数据我自己的程序?
我认为您应该使用 android 服务并在您的活动中创建活页夹。
http://developer.android.com/guide/components/services.html
实现此目的的一种简单(但不是很好)方法是使用 Android Application class 来存储您的管理器的(单例)实例。您始终可以通过在任何 activity.
上调用 getApplication() 来检索对您的应用程序的引用
您需要提供自己的应用程序实现 class 以便在 onCreate() 方法中创建管理器。您还应该为您的经理创建强类型的 getter。
此外,请考虑您需要为应用程序可能收到的系统回调执行哪些操作,例如 onLowMemory()。
所以我最后做的是制作一个 Globals.java 文件,其中包含以下内容
public class Globals {
public static ArrayList<User> userObjArray = new ArrayList<User>();
//Weird magic class stuff
private static Globals instance;
private Globals() {
}
public static synchronized Globals getInstance() {
if (instance == null) {
instance = new Globals();
}
return instance;
}
然后每当我想使用来自全局的数据时,我都会做类似...
Globals.getInstance().userObjArray
这似乎完全符合我的要求。它不适合封装,但这不是我需要完成的目标。
所以我想做的是有几个不同的单一管理器 类 来处理我从互联网上下载的数据的缓存。我希望这些 classes/objects 中的数据可以从我的应用程序中的不同活动访问,从而任何活动都可以根据需要操作数据或调用函数。
例如,我有一个 UserDatabasemanager,我将在其中存储我从互联网上下载的初始原始 JSON 数据和一个用户对象数组,该数组是该 JSON 数据的提炼版本。
我的应用程序会在不同时间从网络上提取数据,并会随着数据的变化更新用户数组。例如,最初下拉符合条件的用户列表。所以我然后将所有用户名和 ID 缓存到用户对象中。如果应用程序随后关注特定的用户页面,它将下载该用户的描述文本并将新描述存储到 User 对象中。 (所有这些我认为我目前无法使用我的编程知识)
我一直在阅读有关通过带有 Parcelable 和 Serializable 的 Intents 发送对象的文章,这似乎有点绕过 Activity 之间共享数据的处理方式。
How to send an object from one Android Activity to another using Intents?
Passing data through intent using Serializable
因为我的意图是将这些 classes/managers/objects(无论我们想怎么称呼它们)用作单个实例,所以我不太在意遵循字母封装,因为它们的工作是提供和更新我的缓存基于活动需求的数据。
我对所有这些 Android/Java 东西仍然很陌生,但似乎这种东西在 C/C++ 中使用指针会相当直接。似乎即使我直接使用 Java 进行编程,我也可以很容易地传递对对象的引用,但是 Activity 的结构似乎不适合在其中轻松传递数据我自己的程序?
我认为您应该使用 android 服务并在您的活动中创建活页夹。 http://developer.android.com/guide/components/services.html
实现此目的的一种简单(但不是很好)方法是使用 Android Application class 来存储您的管理器的(单例)实例。您始终可以通过在任何 activity.
上调用 getApplication() 来检索对您的应用程序的引用您需要提供自己的应用程序实现 class 以便在 onCreate() 方法中创建管理器。您还应该为您的经理创建强类型的 getter。
此外,请考虑您需要为应用程序可能收到的系统回调执行哪些操作,例如 onLowMemory()。
所以我最后做的是制作一个 Globals.java 文件,其中包含以下内容
public class Globals {
public static ArrayList<User> userObjArray = new ArrayList<User>();
//Weird magic class stuff
private static Globals instance;
private Globals() {
}
public static synchronized Globals getInstance() {
if (instance == null) {
instance = new Globals();
}
return instance;
}
然后每当我想使用来自全局的数据时,我都会做类似...
Globals.getInstance().userObjArray
这似乎完全符合我的要求。它不适合封装,但这不是我需要完成的目标。