我正在尝试在我的应用程序中的多个活动之间传递PackageInfo列表。是否可以使用Intent执行此操作?
答案 0 :(得分:0)
如果您确实希望根据包执行某些操作,可以再次获取第二个活动中的包信息,将包名称(com.google。)的数组从一个活动传递到另一个活动。
答案 1 :(得分:0)
你可以在意图的额外内容中添加任何东西,该对象必须是可以分解的(看起来很复杂,但根本不是!)。
您在此处有示例:http://developer.android.com/reference/android/os/Parcelable.html
也许一个具体的列表是可以分区的(比如ArrayList)我不记得了。
我正在考虑的另一种方式是使用共享首选项,我知道你可以在那里放置一个集合,如果你不想在任何地方访问你的列表,这可能是实现它的方法。
希望我能帮忙!
答案 2 :(得分:0)
在这种情况下,您可以在每个活动中查询PackageInfo列表。但在常见的情况下,当我必须通过多个活动共享非parcelable对象时,我会用它来创建一个单例类。请注意,它会消耗内存,因此请确保在不再需要时处理单例。
例如,对于PackageInfos,它看起来像这样:
public class SharedPackageInfos{
private SharedPackageInfos(){}
private static SharedPackageInfos _current;
public static SharedPackageInfos getCurrent()
{
if(_current == null)
{
_current = new SharedPackageInfos();
}
return _current;
}
private List<PackageInfo> packageInfos;
public List<PackageInfo> getPackageInfos()
{
return _packageInfos;
}
public void setPackageInfos(List<PackageInfo> packageInfos)
{
this.packageInfos = packageInfos;
}
public static void dispose()
{
_current = null;
}
}
从活动中调用
SharedPackageInfos.getCurrent().setPackageInfos(myList); //save a list
List<PackageInfo> packageInfos = SharedPackageInfos.getCurrent().getPackageInfos(); //retreive a list