暗黙的Intentを使用する場合、Androidシステムはメディエータのようなもの
Androidアプリケーションでは、他のアプリケーションとの連携に暗黙的Intentを使用することができる。
例えば、MainActivityというアクティビティが、WEBブラウザ(これもアプリケーション)を起動する場合は、次のコードを書く。
public class MainActivity extends Activity{ @Override public void onCreate(){ super.onCreate(saveInstance); setContentView(R.layout.main); Uri uri = Uri.parse("http://d.hatena.ne.jp/graySpace/"); //Intentを生成 Intent intent = new Intent(); //Intentにアクション属性を持たせる intent.setAction(Intent.ACTION_VIEW); //Intentにデータを持たせる intent.setData(uri); //IntentをAndroidシステム(メディエータ)に送信する startActivity(intent); } }
startActivity(intent)メソッドは、アクティビティを起動するために使用するメソッドだが、起動するアクティビティは指定していない。
それでは、起動するアクティビティの選択、選択後の起動は誰が行うのか。
それは、Androidシステムである*1。
そういう意味で、Androidシステムはメディエータで、これによってアプリケーション同士、ActivityやService同士の疎結合が促進されている。