質問

ただ、ランダム質問。私は今のAndroidのビットを学んだし、ほとんどの例では、それは一般的な項目の多く(例えばエディットボックスなど、ボタンなど)の各機能を使用して(cast) findViewById()以内に要求されますようです。

それは活動のメンバ値でその結果を保存するために良いか悪い習慣を検討していますか?簡単な例:

public class MyActivity extends Activity {
    private EditText myText;
    public void onCreate(blah blah) {
       // blah
       this.myText = (EditText) findViewById(R.id.mytext);
    }
}

とそこにからのMyTextフィールドを使用します。私はそれがパフォーマンスのために良いと思う(findViewByIdの内部の仕組みに応じて、私はそれが非常に速く、すでにますかなり確信している)、私はそれがまだ奨励される見たことがありません。また、それは私が問題にこのリード線のような「キャッシュ」何かが(私はファッションにConnectionManagerか何かを思い出したので、データベース接続が正しく解放されていなかったケースがあった)状況に遭遇した初めてではないでしょう。

あなたは(活性は、後に再開されたとき、あまりにも後にして)あなたの活動のメソッド間で何かを覚えておきたい場合は、第二に、多少、関連する、クラスフィールドとSharedPreferencesの値、またはその両方を維持することが賢明ですSharedPreferencesに、よりよい解決策が必要なの値を取得/設定するたびに呼び出すのでしょうか? (より良いパフォーマンスが大幅に影響を与えることなく、「クリーンである)

役に立ちましたか?

解決

これは完全に通常の練習で、あなたがやるべきことを正確に何です。あなたはメモリリークを心配し、または参照を保持しているか、何している場合は、ビューを扱うときにそのことについて心配することはありません。

しかし、あなたはそれがメモリリークを引き起こす可能性があるため、他のコンテキストへの参照を保持について注意する必要があります。それはちょうどあなたがそれをやっているときには注意が、あなたがそれを行うべきではないという意味ではありません。

is it wiser to keep up both a class field and a value in SharedPreferences, or would calling SharedPreferences each time for setting / getting the value where it's needing be a better solution?

あなたは両方を行う必要があります。あなたはのためのメンバ変数を維持する必要がありますのみ、データを読み取るだけでは、メンバ変数に書き込むとき、あなたはまた、共有設定を変更することを確認する必要があるときます。

Also, it wouldn't be the first time I encountered a situation where 'caching' something like this leads to problems (had a case where database connections weren't released properly because I remembered a ConnectionManager or something in that fashion).

これは私が最初に言っていたものです。それはすべてあなたが保存しているかに依存します。ビューがストアに細かい、コンテキストは危険なことができ、およびデータベース接続および登録されたリスナーは、本当に奇妙なバグを引き起こす可能性があります。これは、すべての特定のケースによって異なります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top