在活动之间共享正在下载的arraylist?
Posted
技术标签:
【中文标题】在活动之间共享正在下载的arraylist?【英文标题】:Share an arraylist which is being downloaded among activities? 【发布时间】:2016-04-03 15:23:43 【问题描述】:我是安卓新手。在我的应用程序中,我有一个 arrayList,它被从 Internet 下载的对象填充。同时我需要两个活动来访问arraylist,无论它是否完成。我知道有关服务的事情,但我不知道如何编码。有什么帮助吗?我的代码如下所示:
class A extends Service
void foo()
//uses a loop to get elements from internet
//then adds the elements to myArraylist in each loop
class B extends Activity
//needs to have access to myArraylist asynchronously
class C extends Activity
//needs to have access to myArraylist asynchronously
顺便说一句,对于任何活动,这两个活动不会同时调用 myArrayList。而且我不确定使用服务。还有其他优惠吗?
【问题讨论】:
见这里***.com/questions/22984696/… 或***.com/questions/7057845/… sharedpref 和 arraylists 都不是我关心的!在那里没有发现任何有用的东西。不过谢谢! 【参考方案1】:我相信实现它的最好方法是使用Application
类:
创建类,将其命名为 MyApplication,并使用 getter 和 setter 创建 ArrayList 的字段成员,如下所示:
class MyApplication extends Application
ArrayList<Object> downloadedArray;
public void setDownloadedArray(ArrayList<Object> downloadedArray)
this.downloadedArray = downloadedArray;
public ArrayList<Object> getDownloadedArray()
return downloadedArray;
2 将清单中的条目添加到此类:
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:theme="@style/AppTheme">
3 下载完成后调用setter:
void foo()
//uses a loop to get elements from internet
//then adds the elements to myArraylist in each loop
((MyApplication)getApplication()).setDownloadedArray(yourArray);
4 现在您可以从任何Activity
访问此数组,只需:
ArrayList<Object> downloadedArray = ((MyApplication)getApplication()).getDownloadedArray();
只是不要忘记检查 ArrayList
是否不为空。
【讨论】:
似乎是一个不错的解决方案。但是我需要访问数组列表,即使在它被填充的时候(当元素被下载和添加时)。那这可能吗?并且不会导致异步访问arrayList(同时访问多个)的结果出错吗? 所以在数组创建后立即调用setter。关于异步,据我所知,只要你不改变它不应该是一个问题 我尝试在我的应用中实现您的解决方案,但存在一些重大缺陷。就像我需要当用户在活动之间切换时下载过程保持活动状态。所以这可能只是由服务完成。因此我问了一个新问题。你可能很忙,但我想知道你看一下吗? ***.com/questions/34534014/…以上是关于在活动之间共享正在下载的arraylist?的主要内容,如果未能解决你的问题,请参考以下文章