未在 Android M 上创建自定义应用程序(最终预览)
Custom Application not created on Android M (final preview)
Application#onCreate()
的文档指出:
Called when the application is starting, before any activity, service, or receiver objects (excluding content providers) have been created.
从我记事起,这在实践中一直是正确的,很多应用程序都依赖它来初始化各种东西。然而,这种行为似乎随着最新的 Android M 预览(昨天发布)而改变。
首次安装和启动应用程序时,不会调用自定义 Application
的 onCreate()
。相反,它将立即启动第一个 Activity
。
这只发生在第一次启动应用程序时。以下所有应用程序开始工作并按预期运行,并且在启动 Activity
.
之前调用自定义 Application
的 onCreate()
代码示例
BaseApplication
public class BaseApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Log.d("App", "Test: Application.onCreate()");
}
}
FirstActivity
public class FirstActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("App", "Test: Activity.onCreate()");
}
}
应用清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="app.package.name" >
<application android:name=".application.BaseApplication" >
[...]
</application>
</manifest>
Logcat输出
下面的屏幕截图显示了从全新安装启动应用程序并在 8 秒后再次启动它后的 Logcat 输出。
根据官方问题跟踪器,此问题已在 Android 6.0 的最终版本中得到修复:
https://code.google.com/p/android-developer-preview/issues/detail?id=2965
Application#onCreate()
的文档指出:
Called when the application is starting, before any activity, service, or receiver objects (excluding content providers) have been created.
从我记事起,这在实践中一直是正确的,很多应用程序都依赖它来初始化各种东西。然而,这种行为似乎随着最新的 Android M 预览(昨天发布)而改变。
首次安装和启动应用程序时,不会调用自定义 Application
的 onCreate()
。相反,它将立即启动第一个 Activity
。
这只发生在第一次启动应用程序时。以下所有应用程序开始工作并按预期运行,并且在启动 Activity
.
Application
的 onCreate()
代码示例
BaseApplication
public class BaseApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Log.d("App", "Test: Application.onCreate()");
}
}
FirstActivity
public class FirstActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("App", "Test: Activity.onCreate()");
}
}
应用清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="app.package.name" >
<application android:name=".application.BaseApplication" >
[...]
</application>
</manifest>
Logcat输出
下面的屏幕截图显示了从全新安装启动应用程序并在 8 秒后再次启动它后的 Logcat 输出。
根据官方问题跟踪器,此问题已在 Android 6.0 的最终版本中得到修复: https://code.google.com/p/android-developer-preview/issues/detail?id=2965