Android

Androidの4大構成要素

・Activity 画面を構築

・Service 画面を持たずに裏で常駐

・ContentProvider アプリ間でデータを共有

・Intent 要素を繋げる

Androidアプリ = ソースコード + リソース + マニフェスト

Androidのバージョン分布

http://developer.android.com/about/dashboards/index.html

リスナーの実装について

★直接に実装パターン

public class MyActivity extends Activity implements OnClickListener {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

findViewById(R.id.button1).setOnClickListener(this);

↑複数ボタンの場合に対応しづらい

}

public void onClick(View v) {

// do something

}

}

★匿名クラスパターン

public class MyActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

findViewById(R.id.button1).setOnClickListener(new OnClickListener() {

↓複数ボタンに同じアクションを登録する場合に再利用できない

public void onClick(View v) {

// do something

}

});

}

}

★内部クラスパターン

public class MyActivity extends Activity {

private class MyListener implements OnClickListener { ←クラス定義は面倒

public void onClick(View v) {

// do something

}

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

findViewById(R.id.button1).setOnClickListener(new MyListener());

}

}

★デリゲートパターン

public class MyActivity extends Activity {

OnClickListener myListener = new OnClickListener() {

public void onClick(View v) {

// do something

}

};

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

findViewById(R.id.button1).setOnClickListener(myListener);

findViewById(R.id.button2).setOnClickListener(myListener); ←再利用

}

}

・違うアクションを実装する場合、匿名クラスパターンの方がよい。

・同じアクションを再利用する場合、デリゲートパターンの方がよい。

ちなみに、どんなインターフェースの実装でも同じ。

★LogCatが表示されない時の対処法

1.コマンドプロンプトを起動

2.Android SDKのツールディレクトリに移動

例)C:\XXX\android-sdk_r14-windows\platform-tools (古いバージョンなら\tools)

3.コマンドを実行

adb kill-server

adb start-server

4.Eclipse を再起動

★MessageによるMVC設計