AsyncTaskLoader の使い方 (5/8) 〜 基本的な Loader の実装

AsyncTaskLoader___Android_Developers

AsyncTaskLoader | Android Developers


目次

1. Thread と AsyncTask
2. AsyncTaskLoader の利点
3. LoaderManager の利用
4. よくある間違いと回避法
5. 基本的な Loader の実装
6. いろいろな Loader の使用例
7. データベースと CursorLoader
8. Loader の弱点を克服する


5. 基本的な Loader の実装

・ Loader 
    ベースとなる抽象化クラス。
・ AsyncTaskLoader 
    Loader の拡張。
・ CursorLoader 
    AsyncTaskLoader の拡張。 
    ContentsProvider 専用。

AsyncTaskLoader の制限事項

private static final int CORE_POOL_SIZE = 5; 
private static final int MAXIMUM_POOL_SIZE = 128; 
private static final int KEEP_ALIVE = 1; 
public static final Executor THREAD_POOL_EXECUTOR 
    = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, 
                                KEEP_ALIVE, TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory); 
private static volatile Executor sDefaultExecutor = THREAD_POOL_EXECUTOR;

内部的に ModernAsyncTask を使用している。

重要: ローダーにアプリケーションのコンテキストの参照のみを保持させることでリークを避ける。

/** 
 * コンテキストに関連付けられているアプリケーション·コンテキストを格納する。
 * ローダーは複数のアクティビティで使用できるので、直接コンテキストを保存することは危険。
 * 
 * @param context アプリケーション・コンテキストを取得するために使用
 */ 
public Loader(Context context) { 
    mContext = context.getApplicationContext(); 
}

Loader 内部クラスの各々は、staticとして宣言されなければならない、さもなければ親への暗黙の参照を維持してしまう。

続きを読む >>


AsyncTaskLoader の使い方 (4/8) 〜 よくある間違いと回避法

AsyncTaskLoader___Android_Developers

AsyncTaskLoader | Android Developers


目次

1. Thread と AsyncTask
2. AsyncTaskLoader の利点
3. LoaderManager の利用
4. よくある間違いと回避法
5. 基本的な Loader の実装
6. いろいろな Loader の使用例
7. データベースと CursorLoader
8. Loader の弱点を克服する


4. よくある間違いと回避法

1. 意味のないローダーIDを作成する

Loader を初期化/再起動するときに、ローダーIDをインクリメントしたり、ランダムに作成する。

Loaderの再利用の妨げとなり、混乱にしかならないので、Loaderの種類ごとに、単一一意のIDを使用する。

2. アプリ内のすべてのローダーに対してのIDを定数で作成する。

各LoaderManagerは 独立しているので、Activity や Fragment内でローダーの種類ごとに privateな定数を作成する。

続きを読む >>


Vine の6秒動画を連結する

操作もかんたんでおもしろすぐる。

Vine

Vine

これから流行るぞ! 6秒ループ動画アプリ『Vine』の使い方&解説 : ライフハッカー[日本版]

で、これ、録画した動画ファイルは端末内に保存されています。

20140119-233414

$ adb shell
shell@hammerhead:/ $ cd /sdcard/DCIM/Vine
shell@hammerhead:/sdcard/DCIM/Vine $ ls
2014_01_07_12_00_003.mp4
2014_01_13_17_52_052.mp4
2014_01_13_17_56_046.mp4
2014_01_14_21_20_005.mp4
2014_01_14_21_24_014.mp4
2014_01_14_21_26_022.mp4
2014_01_14_21_35_023.mp4
2014_01_15_06_30_042.mp4
2014_01_15_11_04_054.mp4
2014_01_17_15_28_059.mp4
2014_01_19_16_01_018.mp4
shell@hammerhead:/sdcard/DCIM/Vine $ pwd
/sdcard/DCIM/Vine

mp4ファイルで端末内に保存していたのですね。

なので、パソコン上にまとめて持ってくるには以下コマンドで。

$ adb pull /sdcard/DCIM/Vine .

連結して1つにしちゃいます。

続きを読む >>