2

私は Android 開発に不慣れで、XML フィードを読み取ってコンテンツを一覧表示するこのアプリの作成を開始しました。しかし、フィードが変更されても、同じデータが表示されます。一晩でキャッシュがクリアされたように見えましたが。アプリを起動するたびにフィードの読み取りを強制したいと考えています。Android のキャッシュをクリアする方法で説明されている方法を試しましたが、役に立ちませんでした。

私の推測では、メイン アクティビティで onCreate を実行する必要があると思います (少なくとも、これまでに試したことはあります)。

誰かが私を正しい方向に向けることができますか?

前もって感謝します :-)

ここにいくつかのコードスニペットがあります。

私の活動から:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list_game);
    deleteCache(this);
    new ReadLeagueXml().execute();
}

deleteCache は、私がリンクした他のスレッドのメソッドです。

それから私のdoInBackgroundで私は持っています

InputStream inputStream = new URL(xmlURL).openStream();

if (inputStream != null) {
    list = parse(inputStream);
}

そして最後に onPostExecute で:

ListView matchListView = (ListView)findViewById(R.id.match_list);
List<String> matchArray = new ArrayList<String>();
for (int i = 0; i < matches.size(); i++) {
    matchArray.add(matches.get(i).HomeTeam + " - " + matches.get(i).AwayTeam);
}
matchArray.toArray();
matchesArrayAdapter = new MatchListAdapter(ListGameActivity.this, matches);
matchListView.setAdapter(matchesArrayAdapter);
4

1 に答える 1

2

あなたのコードは完全に問題ないようです。また、「キャッシュをクリア」する必要はありません。

質問に戻りますが、あなたの質問を正しく理解していれば、フィードが更新されていません。これは、 で新しいデータをダウンロードするためですonCreate()。アプリを初めて起動すると、データがダウンロードされます。その後、ユーザーは別のアプリケーションに移動します (Android はアクティビティを閉じず、一時停止するだけです)。したがって、ユーザーが戻ってきたときに、アプリケーションが閉じられていなければ、Android はそれを再開します! だからあなたonCreate()は再び呼ばれることはありません。

onResume()つまり、アクティビティがユーザーに表示されるたびに呼び出されるデータを更新します。に移動するnew ReadLeagueXml().execute();onResume()、ユーザーがアプリを開くたびに新しいデータがダウンロードされます。

ここでAndroid アクティビティのライフ サイクルを確認することをお勧めします。

于 2013-02-17T10:49:27.833 に答える