2010-12-18 6 views
0

私のセットアップです。私はニュースアプリを持っています。このアプリは、ローカルストレージからいくつかのリストビューを読み込みます(私はsharedpreferencesを悪用していますが、それが良い習慣であれば別の質問になります)。このローカルストレージをスムーズに更新できるようにしたい。バックグラウンドタスクでの活動またはサービス?

私の最初のアプローチは、ボタンをトリガーにしてトリックを実行させることでした。しかし、私はまた、サービスが完了したときにそのアクティビティをリフレッシュすることを望んでいました。私はそれをすることができませんでした。 私の現在のアプローチはうまくいくようですが、3Gではスムーズではありません。アクティビティAは「Loading」ボックスを表示し、次にアクティビティBを起動し、それ自体を破棄します。アクティビティBには、読み込み中のボックスが表示され、ダウンロードしてから、それ自体が破棄され、アクティビティAが新しいコンテンツで再起動されます。 しかし、この最後の方法では、3GでAからBへの移行で数秒間画面が黒くなります。

視覚の滑らかさのために、ポップアップを1つ表示して、連続して表示したいと思います。完了したら、アクティビティをリフレッシュする必要があります。

どのように私はこれを達成することができます知っていますか?

私の説明が十分にはっきりしていれば幸いです。それ以外の場合、私はあなたといくつかのコードを共有することを嬉しく思います。事前

+0

コードなしでは、問題が何であるかを知るのは難しいです。 – elevine

+0

問題は、アクティビティBが重すぎることによって引き起こされるアクティビティ間の「遅れ」です。ここでは活動Bです:http://pastebin.com/3akrHtBa(オランダのコメントのために申し訳ありません:D)EDIT>私はアクティビティBをより軽くしたいとは思わないが(それは副次的な利益になるだろうが) UIを円滑にする。 –

答えて

1

での多くは、あなたのコメントににリンクされたコードを見てみると

おかげで、あなたはあなたの活動のonCreate方法にあまりにも多くの仕事をしています。 onCreateは、できるだけ早くユーザーにUIを表示するために軽量に保つ必要があります。 Activity設定の大部分をonResumeメソッドに移動することをお勧めします。さらに、UIスレッドをブロックするもの(データの取得や解析など)は、スレッド上で実行する必要があります。あなたのアプリケーションでこの目的のためにAsyncTaskhttp://developer.android.com/reference/android/os/AsyncTask.html)を使用して見てください。

+0

これは後で試すことができ、これが実際に遅れを解消すれば完了とマークします。それは間違いなく良いですから+1。 –

関連する問題