繁体   English   中英

如何通过清单 <PackageInfo> 在Android活动之间?

[英]How do I pass List <PackageInfo> between activities in Android?

我试图在我的应用程序中的多个活动之间传递PackageInfo的列表。 是否可以使用Intent来做到这一点?

如果您确实希望基于包执行某些操作,则可以再次在第二个活动中获取包信息,请将包名称数组(com.google。)从一个活动传递到另一个活动。

您可以在意向中添加任何内容,而对象仅必须是可包裹的(似乎很复杂,但根本不是!)。

您在这里有示例: http : //developer.android.com/reference/android/os/Parcelable.html

也许一个具体的列表是可打包的(例如ArrayList),我不记得了。

我在想的另一种方法可能是使用共享首选项,我知道您可以在其中放置一个集合,如果您不想在任何地方都可以访问列表,这可能是实现它的一种方法。

希望我帮忙!

在这种情况下,您可以在每个活动中查询PackageInfo列表。 但是在通常情况下,当我不得不通过多个活动共享不可分割的对象时,我通常会为此创建一个单例类。 请注意,这会占用内存,因此请确保在不再需要单例时将其丢弃。

例如,对于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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM