2012-09-07 4 views
1

나는 내 웹 사이트에서 최신 소식 을 표시하는 안드로이드 응용 프로그램을 만들려고 노력하고 있습니다. 특히이 두 가지에 대해 혼란 스럽습니다.업데이트로 뉴스 응용 프로그램 만들기

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 피드를 통해 웹 사이트에서 뉴스를 얻을 수 있습니다.

    이것은 간단한 작업이 아닙니다. 당신은해야합니다

    • 는 입력 스트림으로 XML 피드를 얻기 위해 귀하의 웹 사이트에 RSS 링크와 HTTP 요청을합니다. 이것을 HttpURLConnection 클래스로 달성 할 수 있습니다. 자세한 내용은 here입니다. 당신은 XML이 후, AndroidManifest.xml

    • <uses-permission android:name="android.permission.INTERNET" /> 권한을 추가 피드 파서를 구문 분석하고 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

당신은 연결 변화가 발생할 때마다의가 알림을받는 브로드 캐스트 리시버를 사용할 수 있습니다. 브로드 캐스트 리시버가 모든 변경 통지 도착하면서, 사용자는 가끔 응용 프로그램을 사용하기 때문에 -

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

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

하지만 당신은 아마 너무 많은 요청을 결국 : 여기에 대한 자세한 내용을 참조하십시오 .

피드를 표시하는 이유는 사용자가 실제로 앱을 사용할 때 데이터를로드하지 않고 최신 피드 항목을 사용할 수있을 때까지 기존 뉴스 항목을 표시하기 때문입니다.

내 장치 어떤 시간의 배터리를 소모 응용 프로그램을 통해 시작시에 데이터를로드하는 응용 프로그램 선호 - 내가 (이메일 등) 지속적으로 응용 프로그램과 최신 데이터를 사용하지 않는합니다.

또 다른 가능성은 Google 클라우드 메시징입니다. 이 경우 변경 사항은 배터리 친화적 인 방식으로 푸시됩니다.

두 번째 질문 : 피드의 경우 모든 Android 기기에서 SQLite 데이터베이스를 사용할 수 있습니다.

관련 문제