2012-09-07 164 views
1

我試圖使一個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); 
     } 
    } 
} 

回答

1

您找到的這段代碼是類似於XML解析器的方法。基本上,它應該做的是接收和解析來自您網站的信息。有關Android中解析XML的更多信息,請參閱here

在回答你的問題:

  1. 你可以通過它的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的項目。
  2. 您可以將一堆RSSItem存儲在SQLite Database中。您的數據庫可能只有一個包含5個項目屬性(標題,描述等)的表格作爲列+一個id列。更多關於數據庫here

關於:

從用戶的角度來看,我不喜歡的RSS新聞應用程序在每次手機連接到互聯網時,不斷獲取的飼料。這是因爲性能問題(電池消耗,數據流量)。如果手機總是連接到互聯網,在這段時間內它不會獲取任何東西?

相反,我希望這種類型的應用程序具有刷新機制,以便在我想要的時候獲取新聞(可能實現按鈕)。

0

你可以使用一個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數據庫。