「スマホ de タッくん」でタクシーを注文する

東京都の法人タクシー業界団体、東京ハイヤー・タクシー協会は2014年1月21日、スマートフォンで、複数の法人タクシー会社の車を対象に配車できる共通配車サービスを開始した。

ニュース - 「東京の全タクシーの半数を呼べる」新スマホアプリが登場:ITpro

東京23区と武蔵野市・三鷹市のエリア内のタクシーを呼ぶことができる。

サービス開始当初に呼べるタクシーは、大和自動車交通、共同無線タクシー協同組合、日本交通3社の約6500台。2014年4月までには、グリーンキャブ、チェッカーキャブ無線協同組合、日の丸交通のタクシーを加えて、対象を約9200台にする。この台数は、東京の法人タクシー全体の45%を占める。

で、以下使い方画面。

GPSで現在位置を送信して予約開始。

20140122-051751

建物名など付加情報を追加入力。

20140122-051940

すると、

続きを読む >>


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な定数を作成する。

続きを読む >>