本サイトからスピンオフした姉妹サイトです。iOS2014年12月24日Applicationクラスを拡張すると、アプリケーションイベントの発生時に独自の処理を実行したり、アプリケーションオブジェクトに機能を追加したりできる。その基本的な実装方法を解説する。→ネイティブのAndroid開発では、アプリケーションが起動する時に生成されるApplicationクラスがあり、これを開発者が拡張して、独自の処理を行うことができる。今回は、Xamarin.Androidで、Applicationを拡張して使用する方法を解説する。Applicationクラスを拡張したクラスの作成Applicationクラスを拡張したクラスを、以下のコードのように用意する。//<--4}}}Applicationクラスを拡張したクラス(MyApplication.cs)ここで作成するMyApplicationクラスは、Applicationクラス(Android.App名前空間)から派生させ(1)、さらに[Application]属性を付与する(2)。次に、これはJavaのオブジェクトであるので、3のようなコンストラクターを用意する。4は、アプリケーションが生成された時に、ログを出力する処理だ。1は、ネイティブのAndroid開発と同じであるが、2、3はXamarin.Android独自の手法だ。これらを忘れると、Applicationクラスとして認識されないので注意が必要だ。Xamarin.AndroidでApplicationクラスを拡張する手順はこれだけだ。ネイティブのAndroid開発では、AndroidManifest.xmlファイルへの記述が必要だが、Xamarin.Androidでは2で付与した属性がその代わりとなる。Studioのアプリケーション出力に、ログが出力されるのが確認できる。拡張したアプリケーションクラスを参照するアプリケーションオブジェクト(=Applicationクラスのオブジェクト)の生存期間は、アプリケーション自体の生成から破棄までなので、画面に依存しないデータなどの保存に使用されることが多い。先ほどのMyApplicationクラスに少し書き足して、データを保存するGlobalDataプロパティを追加したのが、下のコードだ。transfer){}......省略......}}Applicationクラスを拡張したクラス(MyApplication.cs)Activity内で、MyApplicationオブジェクトを取得するには、以下のように記述する。//<--2}};}}}MyApplicationオブジェクトをActivityのOnCreateメソッド内で取得するコード(MainActivity.cs)Activityクラスは、Applicationプロパティを持っており、これによりアプリケーションオブジェクトを取得できる。Applicationクラスが拡張されている場合は、拡張されたクラスのインスタンスが取得できるので、as演算子でMyApplicationにキャストする。通常のキャストでも構わないが、as演算子は、キャストに失敗すると(例外ではなく)nullを返すという機能を持つので、失敗時のコードがシンプルになる。MyApplicationオブジェクトが取得できれば、GlobalDataプロパティにアクセスできるので、データの入出力が可能だ。まとめApplicationクラスを拡張して独自の処理を行う方法として、アプリケーション起動時にログを出力する方法と、アプリケーションオブジェクトのプロパティにデータの保存を行う方法を解説した。ネイティブAndroidでの手法と少し異なる点があることに注意されたい。この手順は、Xamarinの公式サイトにも分かりやすい形で記述されていない(強いて挙げれば、以下に示すAndroidManifest.xmlと属性の関連について記述されたページだ)。Overflowに投稿された情報からだ。参考までにこちらも紹介しておきたい。※以下では、本稿の前後を合わせて5回分(第29回~第33回)のみ表示しています。INDEX]を参照してください。Xamarin.iOS/Androidでアプリのデータディレクトリを取得するには?アプリ固有のデータ領域のディレクトリパスを取得するため方法のうち、iOS/Androidで共通のコードの書き方を説明する。Xamarin.iOS/Androidでアプリの設定情報を保存するには?iOSのNSUserDefaultsやAndroidのSharedPreferenceではなく.NETのIsolatedStorageを使って、Xamarin.iOS/Androidでアプリの軽量データを保存する方法を解説する。Xamarin.AndroidでApplicationクラスを拡張するには?Applicationクラスを拡張すると、アプリケーションイベントの発生時に独自の処理を実行したり、アプリケーションオブジェクトに機能を追加したりできる。その基本的な実装方法を解説する。Xamarin.iOSでZipファイルを使用するには?(ZipFileクラス編)iOSアプリ開発標準のZipArchiveライブラリではなく、.NET標準のZipFileクラス編を使って、ZIPファイルの圧縮・展開を行う方法を解説する。Studioのコードエディターのフォントとして設定する方法。機械学習エンジニアを目指す人~初中級者のための技術情報サイトです。「機械学習&AI」「クラウド&ビッグデータ」「IoTデバイス」のネット記事情報を共有中。開発者のためのSlackチーム、作りました:「機械学習&AI」「クラウド&ビッグデータ」「IoTデバイス」のネット記事情報を共有中。2020最適なビューへの切り替えを推奨します:スマートフォン用表示に。