使用更新创建新闻应用程序安卓android
我试图使一个android应用程序显示我的网站上的最新消息 ,我对这两件事情有特别的困惑吗?使用更新创建新闻应用程序安卓android
1.每当 手机自动连接到互联网时,我怎样才能从我的网站获得新闻?
2.我该如何存储这些信息,然后用它来更新设备?
我发现从谷歌的代码,我在正确的方向前进?:
public abstract class BaseFeedParser implements FeedParser {
// names of the XML tags
static final String PUB_DATE = "pubDate";
static final String DESCRIPTION = "description";
static final String LINK = "link";
static final String TITLE = "title";
static final String ITEM = "item";
final URL feedUrl;
protected BaseFeedParser(String feedUrl){
try {
this.feedUrl = new URL(feedUrl);
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
}
protected InputStream getInputStream() {
try {
return feedUrl.openConnection().getInputStream();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
您找到的这段代码是类似于XML解析器的方法。基本上,它应该做的是接收和解析来自您网站的信息。有关Android中解析XML的更多信息,请参阅here。
在回答你的问题:
-
你可以通过它的RSS Feed中获取从您的网站的消息。
这不是一项简单的任务。你应该:
做一个
HTTP
请求与RSS链接到你的网站,以获得XML作为饲料的输入流。你可以用HttpURLConnection
这个类来实现。更多详情here。请务必将<uses-permission android:name="android.permission.INTERNET" />
权限添加到AndroidManifest.xml
-
后你有XML,与饲料解析器解析它并获得
RssItems
列表。一个RssItem
看起来是这样的:public class RSSItem { private String title; private String description; private String category; private String pubdate; private String link; //Getters and setters here }
- 现在,你应该有一个
List<RssItem>
,并显示在ListView
的项目。
您可以将一堆
RSSItem
存储在SQLite Database
中。您的数据库可能只有一个包含5个项目属性(标题,描述等)的表格作为列+一个id列。更多关于数据库here。
关于:
从用户的角度来看,我不喜欢的RSS新闻应用程序在每次手机连接到互联网时,不断获取的饲料。这是因为性能问题(电池消耗,数据流量)。如果手机总是连接到互联网,在这段时间内它不会获取任何东西?
相反,我希望这种类型的应用程序具有刷新机制,以便在我想要的时候获取新闻(可能实现按钮)。
你可以使用一个BroadcastReceiver是获得每当连接发生变化的通知。查看更多有关此位置:
http://www.grokkingandroid.com/android-getting-notified-of-connectivity-changes/
http://www.grokkingandroid.com/android-tutorial-broadcastreceiver/
但你可能最终使太多的要求 - 因为用户会使用你的应用程序只是偶尔,而广播接收器得到通知的每变化。
由于您显示的是Feed,为何不在用户实际使用您的应用时加载数据,并且直到他们最新的Feed项目可用时才显示现有新闻项目。
我宁愿在启动了排水渠我的设备的任何时间的电池应用程序加载数据的应用程序 - 除非我用的应用程序和先进的最新数据不断(如电子邮件)。
作为另一种可能性,您可能需要查看Google Cloud Messaging。在这种情况下,更改会以电池友好的方式进行推送。
对于第二个问题:对于提要,我可能会使用所有Android设备上可用的SQLite数据库。