什么在oncreate()之前被调用

时间:2017-01-29 08:45:07

标签: java android android-studio

我有以下代码,想知道在onCreate()之前调用什么,因为它在调用活动(选项卡式活动)之前显示空白屏幕。可以做些什么来避免显示空白屏幕?

我甚至无法使用onAttach,因为我的课程正在扩展 AppCompatActivity 并实施OnMapReadyCallbackPlaceSelectionListener

@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_tabbed);
  TabHost tab = (TabHost) findViewById(R.id.tabHost);
  tab.setup();

  TabHost.TabSpec spec1 = tab.newTabSpec("Search");
  spec1.setIndicator("Search");
  spec1.setContent(R.id.layout1);
  tab.addTab(spec1);

  TabHost.TabSpec spec2 = tab.newTabSpec("Settings");
  spec2.setIndicator("Settings");
  spec2.setContent(R.id.layout2);
  tab.addTab(spec2);

  SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
  mapFragment.getMapAsync(this);
  locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
  provider = locationManager.getBestProvider(new Criteria(), false);

  if (android.os.Build.VERSION.SDK_INT > 9) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
  }
}

6 个答案:

答案 0 :(得分:1)

要避免空白屏幕,您可以使用以下代码。它有效!!

<style name="Theme.Transparent" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowIsTranslucent">true</item>
</style>
and use it with your activity in AndroidManifest as:

<activity android:name=".ActivitySplash" android:theme="@style/Theme.Transparent">

答案 1 :(得分:1)

如果创建了活动,则调用以下函数:

onCreate()

onStart()   

onResume()

onPause()

onStop()

onDestroy()

onRestart()

当片段在活动中制作时:

onAttach()

onCreate() 

onCreateView() 

onActivityCreated()

 onCreateView() 

onStart()

onResume()

onPause() 

onStop()

onDestroyView()

onDestroy()

答案 2 :(得分:1)

要调查慢负载和白屏,您应该使用Android的TraceView功能:MethodTracing

如果您的项目中有一个扩展Application的课程,请添加Debug.startMethodTracing()作为其onCreate方法的第一行,如果您没有Application类,将此行添加为Activity onCreate的第一行。

稍后,在您的活动onResume中,或者甚至更晚,如果您愿意,可以致电Debug.stopMethodTracing()停止跟踪。

您可以查看在Studio中创建的跟踪文件,以了解哪些方法耗时长,为什么。

请参阅此处的文档: https://developer.android.com/studio/profile/traceview.html

Android的其他分析工具: https://developer.android.com/studio/profile/android-monitor.html#monitors

答案 3 :(得分:0)

在onCreate之前,活动中没有调用任何内容,请查看下面的图像

在创建任何活动之前,会实例化一个应用程序实例:

https://developer.android.com/reference/android/app/Application.html

enter image description here

答案 4 :(得分:0)

正如ΦXocę 웃 Пepeúpa ツ所说,onCreate()之前没有调用任何方法。您可以查看以下从Complete Android Fragment & Activity Lifecycle获取的图表:

enter image description here

答案 5 :(得分:0)

Activity中,attachBaseContextonCreate之前被调用。您可以创建一个Log进行测试。

AppCompatActivity中了解更多信息。

或者您可以看到所有方法都按AppCompatActivity.java

的顺序被调用

enter image description here