我需要在应用程序实际启动之前执行一些操作。
我尝试了这个但是无法到达断点:
public class MyApplication : Android.App.Application {
public MyApplication(IntPtr javaReference, JniHandleOwnership transfer)
: base(javaReference, transfer) { }
public override void OnCreate() {
base.OnCreate();
int test = 1; //breakpoint
}
}
我做错了吗?或者这是一些调试器问题?
答案 0 :(得分:1)
在Java中,您必须将android:name
文件中application
标记的AndroidManifest.xml
属性设置为.MyApplication
。假设它在Xaramin中相似:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:name=".MyApplication"
>
答案 1 :(得分:1)
添加自己的Android应用类的Xamarin.Android
方式:
Name
:[Application(Name = "com.sushihangover.MyAndroidAppClass")]
public class MyApplication : Application
{
public MyApplication(IntPtr handle, JniHandleOwnership transfer) : base(handle,transfer) { }
public override void OnCreate()
{
base.OnCreate();
Log.Debug("SO", "App OnCreate");
}
}
将此完全限定名称添加为android:name=
属性:
~~~
<application android:name="com.sushihangover.MyAndroidAppClass" android:allowBackup="true" android:icon="@mipmap/icon" android:label="@string/app_name">
</application>
~~~
答案 2 :(得分:1)
这里的关键项目是&#34;注册&#34;您的自定义应用程序类使用OnCreate
属性。其次,您需要提供[Application]
覆盖以确保调用自定义应用程序类的构造函数。否则,如果没有<application>
属性,我们就不会在AndroidManifest.xml
中注册自定义android.app.Application
元素。相反,我们使用默认的<application android:label="App6" android:name="android.app.Application" android:allowBackup="true" android:icon="@drawable/icon" android:debuggable="true">
代替:
[Application]
因此,如果我们使用<application android:label="App6" android:name="md50033386ba710bcf156abf7e9c48d30ef.MyApplication" android:allowBackup="true" android:icon="@drawable/icon" android:debuggable="true">
属性注册,那么我们将看到使用的自定义应用程序类:
[Application] //Name is typically a good idea as well
public class MyApplication : Application
{
public MyApplication(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
{ }
public override void OnCreate()
{
base.OnCreate();
int myInt = 1;
}
}
以下是一个完整的工作示例:
{{1}}
如果没有在上面的评论中定义名称,您将获得一个名为md5的哈希值。
我们的架构文档中的一些注释也可能对此有益:
https://developer.xamarin.com/guides/android/under_the_hood/architecture/#Application_Startup
答案 3 :(得分:-1)
这可能是调试器问题。在onCreate()中,尝试做一些你可以在活动中看到的东西,例如在TextView中设置文本。