网络调用返回一个非常大的json文件。但是,我只需要在整个应用程序中使用其中的一小部分。将少量数据用于多个片段和活动的最佳策略是什么?
我尝试使用共享首选项,但不存储对象。
答案 0 :(得分:0)
从JSON中提取所需数据为String
,然后将其作为extras参数传递给需要它的活动和片段:
Intent intent = new Intent(context, SomeActivity.class);
intent.putExtra("YOUR_DATA_KEY", yourJsonString);
startActivity(intent);
然后在需要它的活动和碎片中再次提取它:
Intent intent = getIntent();
String yourJsonString= intent.getStringExtra("YOUR_DATA_KEY");
答案 1 :(得分:0)
为了共享复杂的数据结构或对象,我将通过创建自定义子类来扩展Application。即使应用程序从一个活动转移到另一个活动,所有活动都可以访问应用程序对象(顾名思义)。下面是一个非常简单的例子,只是为了向您展示这个想法。您可以根据需要修改/调整它。
public class MyApplication extends Application {
private X x;
public static void setX(X x) { ... }
public static X getX() { ... }
}
public class ActivityA extends Activity {
...
MyApplication.setX(x);
}
public class ActivityB extends Activity {
...
X x = MyApplication.getX();
}
X可以是集合,数据结构或任何对象。
扩展Application时,需要在清单中声明它。您可以找到有关如何执行此操作的信息。