我从android.app.Application派生自定义应用程序,我无法触发其onCreate事件。这是实现
import android.app.Application;
public class MyApplication extends Application {
public MyApplication() {
super();
}
@Override
public void onCreate() {
super.onCreate();
}
}
以下是我使用它的方式:
MyApplication ctrl = new MyApplication();
答案 0 :(得分:78)
在AndroidManifest.xml
<application
android:name="MyApplication"
android:debuggable="true"
android:icon="@drawable/icon"
android:label="@string/app_name">
</application>
然后你的onCreate()
会被解雇。
答案 1 :(得分:4)
非常简单
在AndroidManifest.xml
内的application
标记内,输入Application
子类的名称及其android:name
属性下的路径。
示例:
<application
...
android:name=".models.custom.BaseApplication"
...
> ... </application>
答案 2 :(得分:1)
不要构建它,从Context
获取它。
例如来自Activity
:
MyApplication ctrl = (MyApplication)getApplicationContext();
更多信息: Context.getApplicationContext()
文档说明onCreate()
是
在应用程序启动时,在任何其他应用程序之前调用 对象已创建
答案 3 :(得分:1)
您实际上并未使用new
运算符创建活动的实例。相反,你开始这样的意图:
Intent start = new Intent(context, Classname.class);
context.startActivity(start);
使用new
运算符创建对象时,永远不会调用onCreate
。
[编辑]使用new
运算符onCreate
创建应用程序时,不会调用[/ EDIT]
[EDIT2]你可以创建一个静态方法来返回这样的应用程序:
public static MyApplication getApp() {
return mInstance;
}
[/ EDIT2]
答案 4 :(得分:0)
正如Balaji所提到的,即使在应用标签
下提及班级名称后仍然面临问题<application
android:name="MyApplication"
android:debuggable="true"
android:icon="@drawable/icon"
android:label="@string/app_name"> </application>
然后试试这个:
尝试并禁用“即时运行”,然后清理项目并重建它,然后重新运行。 它对我有用。 感谢。
答案 5 :(得分:0)
我遇到了这个问题,发现就我而言,整个问题都在电话方面。我重启了手机,这解决了问题。
答案 6 :(得分:0)
在清单文件中确保你已经添加了标签,即扩展应用程序的类。
标签= android:name=".MyApplication
清单文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.services">
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Services">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--Declaring the Service in the manifest file-->
<service
android:name=".MyServiceDemo"
android:foregroundServiceType="dataSync" />
</application>
</manifest>
MyApplication.java(即扩展 Applicatoin 的类)
package com.example.services;
import android.app.Application;
public class MyApplication extends Application {
private static MyAppsNotificationManager notificationManager;
@Override
public void onCreate() {
super.onCreate();
notificationManager = MyAppsNotificationManager.getInstance(this);
notificationManager.registerNotificationChannelChannel(
getString(R.string.channelId),
"BackgroundService",
"BackgroundService");
}
public static MyAppsNotificationManager getMyAppsNotificationManager(){
return notificationManager;
}
}