自定义应用程序未在Android M上创建(最终预览)

Mic*_*Bak 14 android android-6.0-marshmallow

Application#onCreate()各州的文件:

在应用程序启动时调用,在创建任何活动,服务或接收方对象(不包括内容提供程序)之前调用.

只要我记得并且许多应用程序依赖于此来初始化各种内容,这在实践中已经成为现实.但是,这种行为似乎随着最新的Android M预览(昨天发布)而改变.

当应用程序第一次安装和启动,自定义ApplicationonCreate()就不会被调用.相反,它会Activity立即启动第一个.

这只发生在第一次应用程序启动时.以下所有应用程序启动工作,并预期运行,且自定义ApplicationonCreate()开始的之前调用Activity.


代码示例

BaseApplication

public class BaseApplication extends Application {
   @Override
   public void onCreate() {
      super.onCreate();
      Log.d("App", "Test: Application.onCreate()");
   }
}
Run Code Online (Sandbox Code Playgroud)

FirstActivity

public class FirstActivity extends Activity {
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      Log.d("App", "Test: Activity.onCreate()");
   }
}
Run Code Online (Sandbox Code Playgroud)

应用清单

<?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>
Run Code Online (Sandbox Code Playgroud)

Logcat输出

下面的屏幕截图显示了从干净安装启动应用程序后的Logcat输出,然后在8秒后再次启动它.

Logcat输出

Mic*_*Bak 3

根据官方问题跟踪器,此问题已在 Android 6.0 最终版本中修复: https://code.google.com/p/android-developer-preview/issues/detail ?id=2965