Java 从my MainActivity访问时,服务中的静态ArrayList为空
我正在制作一个基本的应用程序,它只从谷歌读取RSS文件,并在列表视图中显示标题。我遇到的问题是,当我在启动intent服务后访问intent服务时,我在IntentService中使用的静态ArrayList是空的。这里可能缺少一些非常基本的东西,但在我向服务添加更多RSS链接之前,tit一直在工作。我试着对它们进行注释,看看是否有某种过载,但没有任何改变,我想这意味着我在没有意识到或记住的情况下改变了其他东西 这是我的相关代码,我试图访问的ArrayList是RSSsearcher中的newsList变量。在过去,我记录了arraylist的字符串值,并确认它是在RSSsearcher类中填充的,但在MainActivity类中为空 相关代码: RSSsearcher:Java 从my MainActivity访问时,服务中的静态ArrayList为空,java,android,Java,Android,我正在制作一个基本的应用程序,它只从谷歌读取RSS文件,并在列表视图中显示标题。我遇到的问题是,当我在启动intent服务后访问intent服务时,我在IntentService中使用的静态ArrayList是空的。这里可能缺少一些非常基本的东西,但在我向服务添加更多RSS链接之前,tit一直在工作。我试着对它们进行注释,看看是否有某种过载,但没有任何改变,我想这意味着我在没有意识到或记住的情况下改变了其他东西 这是我的相关代码,我试图访问的ArrayList是RSSsearcher中的news
public class RSSsearcher extends IntentService {
public static ArrayList<NewsCard> newsList = new ArrayList<>();
private static String TAG = "RSS";
public RSSsearcher() {
super("RSSsearcher");
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
parseNewsLists();
Log.i(TAG,"newsList in onHandleIntent" + newsList);
}
public static ArrayList<NewsCard> getNewsCards() {
return newsList;
}
//helper method to create all the RSSfeed objects
private void parseNewsLists() {
Log.i(TAG, "the service has been started");
//Creating the RSS feed objects
RSSfeed topStories = new RSSfeed("https://news.google.com/news?cf=all&hl=en&pz=1&ned=us&output=rss");
RSSfeed worldNews = new RSSfeed("https://news.google.com/news/rss/headlines/section/topic/WORLD?ned=us&hl=en");
RSSfeed usNews = new RSSfeed("https://news.google.com/news/rss/headlines/section/topic/NATION?ned=us&hl=en");
RSSfeed buisnessNews = new RSSfeed("https://news.google.com/news/rss/headlines/section/topic/BUSINESS?ned=us&hl=en");
RSSfeed technologyNews = new RSSfeed("https://news.google.com/news/rss/headlines/section/topic/TECHNOLOGY?ned=us&hl=en");
RSSfeed entertainmentNews = new RSSfeed("https://news.google.com/news/rss/headlines/section/topic/ENTERTAINMENT?ned=us&hl=en");
RSSfeed sportsNews = new RSSfeed("https://news.google.com/news/rss/headlines/section/topic/SPORTS?ned=us&hl=en");
RSSfeed scienceNews = new RSSfeed("https://news.google.com/news/rss/headlines/section/topic/SCIENCE?ned=us&hl=en");
RSSfeed healthNews = new RSSfeed("https://news.google.com/news/rss/headlines/section/topic/HEALTH?ned=us&hl=en");
try {
//getting RSS feeds
topStories.FileReader();
worldNews.FileReader();
usNews.FileReader();
buisnessNews.FileReader();
technologyNews.FileReader();
entertainmentNews.FileReader();
sportsNews.FileReader();
scienceNews.FileReader();
healthNews.FileReader();
} catch (Exception e) {
Log.i(TAG, Log.getStackTraceString(e));
}
//adding stories to main
newsList.addAll(topStories.getNews());
newsList.addAll(worldNews.getNews());
newsList.addAll(usNews.getNews());
newsList.addAll(buisnessNews.getNews());
newsList.addAll(technologyNews.getNews());
newsList.addAll(entertainmentNews.getNews());
newsList.addAll(sportsNews.getNews());
newsList.addAll(scienceNews.getNews());
newsList.addAll(healthNews.getNews());
}
}
提前谢谢你 我想当你打电话的时候
newsList.addAll(RSSsearcher.getNewsCards());
intent仍在执行中仅仅因为您启动了intent服务,并不意味着在您执行此操作时,它已经拥有了一切
newsList.addAll(RSSsearcher.getNewsCards())代码>。在was中访问数据并不是一个好主意。buisnessNews
拼写错误。Tyczj,我之所以希望它与服务一起使用,是因为我希望应用程序在后台每隔一个小时左右都能不断获取RSS提要,但我还没有添加该部分。有更好的方法吗?卢·布洛赫,的确如此。编辑我没有完成键入。我是否可以等待意图完成执行或在其他任务中执行?如果我在AsyncTask中完成了它,那么我仍然会有相同的问题,因为它在一个单独的线程中,对吗?
newsList.addAll(RSSsearcher.getNewsCards());