我有以下代码,想知道在onCreate()
之前调用什么,因为它在调用活动(选项卡式活动)之前显示空白屏幕。可以做些什么来避免显示空白屏幕?
我甚至无法使用onAttach,因为我的课程正在扩展 AppCompatActivity 并实施OnMapReadyCallback
,PlaceSelectionListener
。
@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);
}
}
答案 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
答案 4 :(得分:0)
正如ΦXocę 웃 Пepeúpa ツ所说,onCreate()
之前没有调用任何方法。您可以查看以下从Complete Android Fragment & Activity Lifecycle获取的图表:
答案 5 :(得分:0)
在Activity
中,attachBaseContext
在onCreate
之前被调用。您可以创建一个Log
进行测试。
在AppCompatActivity中了解更多信息。
或者您可以看到所有方法都按AppCompatActivity.java