1

私は自分のWebサイトから最新ニュースを表示するAndroidアプリケーションを作成しようとしていますが、これら2つのことについて特に混乱していますか?

1.電話がインターネットに自動的に接続されるたびに、Webサイトからニュースを正確に取得するにはどうすればよいですか?

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);
        }
    }
}
4

2 に答える 2

1

あなたが見つけたコードの一部は、XMLパーサーのようなアプローチです。基本的に、それがすべきことはあなたのウェブサイトから情報を受け取りそして解析することです。AndroidでのXMLの解析について詳しくは、こちらをご覧ください

あなたの質問に答える:

  1. あなたはそのRSSフィードを通してあなたのウェブサイトからニュースを得ることができます。

    これは簡単な作業ではありません。あなたがすべき:

    • HTTPWebサイトへのRSSリンクを使用してリクエストを行い、入力ストリームとしてXMLフィードを取得します。HttpURLConnectionあなたはクラスでこれを達成することができます。詳細はこちら<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
  2. の束をRSSItemに保存できSQLite Databaseます。データベースには、列として5つのアイテムプロパティ(タイトル、説明など)とID用の1つの列を持つテーブルを1つだけ含めることができます。データベースの詳細については、こちらをご覧ください。

についてevery time the phone is connected to internet automatically

ユーザーの観点からは、電話がインターネットに接続するたびにフィードを常に取得するRSSニュースアプリは好みません。これは、パフォーマンスの問題(バッテリーの消耗、データトラフィック)が原因です。電話が常にインターネットに接続されている場合、この間は何もフェッチされません。

代わりに、この種のアプリには、必要なときにニュースを取得するための更新メカニズムが必要です(ボタンを実装する場合もあります)。

于 2012-09-07T22:21:52.290 に答える
0

接続が変更されるたびに通知を受け取るBroadcastReceiverを使用できます。これについて詳しくは、こちらをご覧ください。

http://www.grokkingandroid.com/android-getting-notified-of-connectivity-changes/

http://www.grokkingandroid.com/android-tutorial-broadcastreceiver/

ただし、BroadcastReceiverにすべての変更が通知されるのに対し、ユーザーはアプリをたまにしか使用しないため、リクエストが多すぎることになります。

フィードを表示しているので、ユーザーが実際にアプリを使用し、最新のフィードアイテムが利用可能になるまで、既存のニュースアイテムを表示するときにデータをロードしてみませんか。

アプリと最新のデータ(メールなど)を常に使用しない限り、いつでもデバイスのバッテリーを消耗するアプリよりも、起動時にデータを読み込むアプリの方が好きです

別の可能性として、GoogleCloudMessagingをご覧になることをお勧めします。この場合、変更はバッテリーに優しい方法でプッシュされます。

2番目の質問:フィードには、おそらくすべてのAndroidデバイスで利用可能なSQLiteデータベースを使用します。

于 2012-09-07T20:22:18.720 に答える