タグ

ブックマーク / www.kojion.com (5)

  • 1.11. AsyncTaskLoader — Kojionilk

    警告 AsyncTaskLoader の 1 つの有力な実装 (拡張) が CursorLoader である。 CursorLoader の守備範囲は CRUD の中の R (read) のみを扱う。 Observer パターンにてコンテンツの変更を監視し、 変更に反応して取得処理がコールされるものである。 AsyncTaskLoader はそのまま AsyncTask を置き換えるものでは ない。 ローダは主に UI を持つ Activity / Fragment に対し非同期のロード (CursorLoader と同じく read) を提供するものである。 下記の記事の通り、 AsyncTaskLoader は何らかの拡張をしないと使い物にならない。 更に AsyncTaskLoader (LoaderManager) 周りの実装がステートフルな為、 デバッグが困難になることがある。

  • コジオニルク - Android - 俺的命名規約

    Android - 俺的命名規約 Android開発をやっていて困ることは、コードの命名規則などが一般的なJavaと異なったり、ネット上でいろいろな流儀に溢れていたりして「どのように命名するのが正しいのか?」を常に迷ってしまうところだ。 ここでは、あくまで筆者がAndroidのサンプルのソースなどや経験上「こうすれば一般的な流儀にも外れずスマートなのではないか」という命名規則をあくまで俺的に書く。 つまり、「Google公式的に正しい」というものではない事に注意。大体公式のサンプルソースなども流儀がぶれているところがあるので微妙に見えるが。 /src以下のコードは基的にJavaの一般的な命名規則に従う Effective Java等を参考にされたい。 他にも、Javaのコーディング規約はネットに情報が溢れている。 ここでは挙げ切れないと思うが、例えば以下のような感じである。 パッケージ名

  • コジオニルク - Android - RelativeLayout

    Android - RelativeLayout RelativeLayoutと言えば、「指定IDのビューに対して」「親レイアウトに対して」等相対的にビューを配置していくレイアウトである。 「RelativeLayout」で検索すると、大体が「こうすれば相対的に配置が出来るんだ!」という例で溢れている。 しかし、多くの場合何が凄いのか、何が便利なのかわからない。 最近のADTでAndroidプロジェクトを作ると、最初に作られるレイアウトファイルのルートViewGroupはRelativeLayoutになっている(以前はLinearLayoutだった)。 つまり、Google的にもRelativeLayoutはお勧めなのだろう。しかし、LinearLayoutやTableLayoutに比べて学習コストが高いように見える。何が便利なのか? 何が便利なのか? ビュー階層が減らせる為パフォーマンス

  • コジオニルク - Android - Androidプログラマかを見分ける12の質問

    自称「Androidプログラマ」を見分ける質問。こちらのJavaプログラマであるかを見分ける10の質問が面白かったので作ってみた。 明確な正解は無いのだが、この12質をすれば何となく適当に尤もらしくしゃべってるだけだなこいつは、というのが見抜けるはず。 1年程度、自分で調べながら実務経験を積めば以下の質問は2/3程度は「それなりに内容をもって」答えられるのではないか。 (自称Androidプログラマは聞かれてもいないのにちぐはぐな事を言い出すからすぐわかる) ListViewを使うとただ単にViewを適宜生成、連結してリストを作った場合に対して大幅な利点が存在するが、それは何か。実装の癖を交えて簡単に説明せよ。 HTTP通信を行う際に普通に行うと画面が固まってしまう(時間が長いと警告ダイアログが出てしまう)が、どのように実装すべきか。 ダイアログは気軽に出せて便利だが、気をつけないと

  • コジオニルク - Android - DialogFragment

    Android - DialogFragment 何故DialogFragmentか Android Support Packageが登場する以前のダイアログの表示の仕方は以下のようなものだった。 public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Activity.sho

  • 1