Edited at

Xamarin.Android でオレオレ Application クラスを使う

More than 5 years have passed since last update.

オレオレApplicationクラスって、コレのことなんですが、正式名称知らないので勝手にこう呼んでます(^_^;)

Xamarin.Android では、Application クラスを継承するのに加えてもう二手間くらい必要みたいです。割と苦労したのでメモしておきます。


AndroidManifest.xml へ追記

Xamarin.Android では最初は AndroidManifest.xml は存在しないのですが、このような手順で追加できます。

んで、<application> タグに android:name 属性を追記します。ここは Android本家と同じ要領です。


AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1" android:versionName="1.0" package="HelloXamarinAndroiid.HelloXamarinAndroiid">
<uses-sdk />
<application android:label="HelloXamarinAndroiid" android:name=".MyApplication">
</application>
</manifest>


Application クラスを継承したクラスを作る

次に、クラスの実装ですが、Application クラスから派生させる他、


  • [Application] 属性を付ける


  • (IntPtr, JniHandleOwnership) なコンストラクタを用意する

ことが必要なようです。

こんなかんじ。


MyApplication.cs

namespace HelloXamarinAndroiid

{
[Application] // この属性が必要らしい
class MyApplication : Application
{
// このコンストラクタを明示的に override する必要があるらしい
public MyApplication (IntPtr javaReference, JniHandleOwnership transfer)
: base(javaReference, transfer)
{
}

public override void OnCreate()
{
base.OnCreate();
// Test
Android.Util.Log.Debug("MyApplication", "OnCreate called.");
}
}
}


アプリを動かすと、ログが出力されてるのでこの手順でいいのかと。


参考