2012-05-01 8 views
3

활동을 시작하면 잠시 지연됩니다. 내 앱 아이콘을 클릭하면 내 활동이 표시되기 전에 약 1 ~ 1.5 초 동안 홈 화면이 화면에 유지됩니다.주요 활동 시작 지연

내 활동의에서 onCreate 방법은 약 800ms 완료하는 데 소요됩니다.

나는 또한 내가 빈 레이아웃과 테스트 작업을 사용하는 경우에도, android:screenOrientation="landscape"을 설정하는 것도 눈에 띄는 지연을 추가하는 것으로 나타났습니다.

이 지연을 제거하는 방법이 있습니까, 또는 UI가로드되는 동안 적어도 검은 화면을 표시?

편집 : 아래 테스트 활동 코드를 참조하십시오. 내 실제 활동에는 GUI 요소와 엔진 로직, 사운드 등을 포함하는 많은로드가 있습니다. 실제 문제는이 작은 테스트 활동을 사용하여 지연이 표시된다는 것입니다. 테스트 활동에 대한


코드 :

public class TestActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // Set full screen mode and disable 
     // the keyguard (lockscreen) 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN 
          | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD 
          | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
          | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

     setContentView(R.layout.main); 
    } 
} 

레이아웃 XML :

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:keepScreenOn="true" > 
</FrameLayout> 

매니페스트 :

<activity 
    android:name=".TestActivity" 
    android:configChanges="orientation|keyboardHidden" 
    android:label="@string/app_name" 
    android:screenOrientation="landscape" 
    android:windowSoftInputMode="stateAlwaysHidden|adjustPan" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
+1

onCreate()의 내용은 무엇입니까? –

+0

onCreate에서 코드를 게시하십시오. – Bobbake4

+0

에뮬레이터에서도 표시됩니까? –

답변

2

당신이 근처 빈 활동에 대한 기본 활동을 설정할 수 있습니다 그 바를 보여주는 것 이상을하지 않는다. ckground와 드레이크 말했듯이, 시작 화면은 꽤 잘 작동

+0

확인. 이 스플래시에서 주 활동을 시작하려면 어떻게해야합니까? onCreate/onResume/...에 활동 시작을 넣으면 문제가 계속 발생합니다. 그리고 스플래시 활동을 어디에서 마무리해야할까요? – hthms

+0

onCreate() 메소드에서 '빈'기본 활동 인 startActivity (새 인 텐트 (getApplicationContext(), RealActivity.class))와 같은 것으로; –

+0

감사합니다. 또한 액티비티 간의 원활한 전환을 위해'android : noHistory = "true"'와'android : theme = "@ android : style/Theme.NoTitleBar.Fullscreen"을 추가해야했습니다. – hthms

0

시작 화면처럼 .. 실제 활동을 시작합니다. 다음은 AsyncTask를 통해 만드는 방법을 보여주는 유사한 질문에 대한 링크입니다. Android SplashScreen

0

Ans Drake는 완벽하지만 확장 할 수 있습니다. 사용자 정의 스플래시 화면 이미지를 전체 시간 동안 볼 수있게하려는 경우, 창에 색상을 적용하면 색상에서 실제 슬래시 화면으로 전환됩니다. 어떤 나쁜 UX가 될 수 있습니다. 내가 제안하는 ans는 setContentView를 필요로하지만 테마를 통해서만 스플래시 스크린을 관리한다.

우리는 컨트롤 내 경우처럼 자바의 테마를 설정할 수 없습니다 매우 늦게 내 시작 활동에서 onCreate에왔다. 그 때까지 검은 화면이 계속 보입니다.

창이 우리가 menifest에 지정 테마에서 관리하는 것을 나에게 생각을했다. 다음과 같이 내가 만든

<activity 
     android:name=".main.activities.SplashScreen" 
     android:theme="@style/Splash" 
     android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
</activity> 

지금 주제는 다음과 같습니다 : 비트 맵 리소스를 포함하는 드로어 블 자원의

<style name="Splash" parent="@style/Theme.AppCompat.Light"> 
    <item name="android:windowBackground">@drawable/splash</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="windowNoTitle">true</item> 
    <item name="colorPrimaryDark">@color/green_09</item> 
    <item name="colorPrimary">@color/green_09</item> 
    <item name="windowActionBar">false</item> 
</style> 

스플래쉬, 내가 조정할 필요가

menifest 내가 가지고있다 조금 펴서 센터가 아닌 상태로 완벽하게 보이게하려면 :

<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:antialias="true" 
    android:dither="true" 
    android:gravity="fill" 
    android:src="@drawable/splash_screen" />