如何在Android中的活动之间传递List <packageinfo>?</packageinfo>

时间:2014-04-25 06:17:44

标签: android android-intent

我正在尝试在我的应用程序中的多个活动之间传递PackageInfo列表。是否可以使用Intent执行此操作?

3 个答案:

答案 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