Android開発テクニック、よくあるピットとソリューション(二)


一、ViewPager+Fragment動的削除キャッシュの問題発生原因:我々は開発中によくViewPager+Fragmentを使用し、時にはこのような需要がある可能性があり、ViewPagerの中の内容を動的に削除管理する必要があるが、ViewPagerはスライドのスムーズ性を保証するために、viewpagerは現在のページをロードする時にpagerページの左右ページの内容をメモリにロードしたことを知っている.だからこの時私たちが何も処理しなければ、私たちが予想した効果を達成したのです.ソリューション:1.FragmentPagerAdapterをFragmentStatePagerAdapterに置き換えます.前者はロードしただけでfragmentのビューはずっとメモリの中にあるので、この過程でどのようにリフレッシュしても、プログラムが終了するまでクリアすることはできません.後者は私たちのニーズを満たすことができます.2.Adapterのメソッド-getItemPosition()を書き換え、PagerAdapterに戻すことができます.POSITION_NONEでいいです.以下は参照です.
    @Override
    public int getItemPosition(Object object) {
        // TODO Auto-generated method stub
        return PagerAdapter.POSITION_NONE;
    }

ここまで来ると、viewpagerのfragmentを勝手に削除し、勝手に削除することができます.二、Dialogのいくつかのインタラクションが簡単で、あるいはただ機能を展示するページをよく使って、もし1つのActivityを使って表示するならば、あまりにも煩雑で、費用も大きくて、Fragmentを使うならば、卵の痛みのライフサイクルも処理しにくくて、この時1つの全画面のDialogを使って1つのActivityを模倣するのは1つの悪くない選択で、詳細は私のブログの中の1篇の招待状Dialogの高冷用法を参照してください.三、SplashページのことはほとんどのページにSpalshページがあります.通常、Activityで全画面の背景図をロードしたり、appのロゴを置いたりして、2秒後にログインやホームページにジャンプしたりします.その間にデータの初期化、更新のチェックなどの操作をする可能性があります.多くの仲間もそうしていると信じていますが、Activityが2秒で殺すのはもったいないと思いませんか?個人的にはこのようなオーバーヘッドは非常にお得ではないと思います.上の1つを借りて、Dialogを利用してSplashページをシミュレートし、2秒後にdismissがこのDialogを落とし、更新をチェックし、データを初期化するなどの操作をMainActivityに置くことができます.SplashActivityの代わりにFragmentを使用するなど、Splashページと同じ効果が得られます.四、内部クラスを大切にする開発では、内部クラスをよく使います.内部クラスの出現は、Javaが単独で継承できる限界を解決し、開発をより柔軟にすることができます.しかし内部類がうまく使えないとAndroid Developerの悪夢、OOM!が現れる.どうしてですか.基本的に少し良い学生は、内部クラスが外部クラスのメンバー変数と方法にアクセスできることを知っているはずです.内部クラスは外部クラスの参照を持っているため、1つのActivityで使用している内部クラスは、Activityが破棄されたとき、内部クラスが解放されないと、このActivityはGCで回収できません.内部クラスにActivityのアプリケーションがあるからです.内部クラスについてよく知らないか、よく知らない場合は、まず私のこのブログを見てJava内部クラス5、libraryのことを深く理解してください.libraryのswitchではidを使ってcaseすることはできません.これは私の前のブログですでに話しました.ここでlibraryのピットについて説明します.依存ライブラリを導入すると、依存ライブラリにはsupport v 4のパッケージが付属します.このv 4パッケージのバージョンは、プロジェクトを作成するときのバージョンと一般的に一致しますが、自分たちのプロジェクトのv 4パッケージの依存ライブラリのv 4パッケージのバージョンが一致しないと、不思議なエラーログが次々と表示されます.この場合の処理方法も簡単です.v 4パッケージはすべて下向きに互換性があるため、依存ライブラリのバージョンと私たち自身のプロジェクトのバージョンを一致させるだけでいいです.今日はここまでまとめておきますが、上記の発言に間違いがあれば、皆さんがタイムリーに指摘してほしいと思います.みんなの関心を持つ私のブログHi小魚を歓迎します