안 드 로 이 드 콜 드 시작 앱 초 켜 는 방법 자세히 알 아 보기

머리말
이 글 을 읽 기 전에 먼저 몇 가 지 를 이해 해 야 한다.
1.안 드 로 이 드 의 콜 드 시작 시간 은 무엇 입 니까?
      콜 드 스타트 타임 은 사용자 가 모 바 일 데스크 톱 에서 앱 을 클릭 하 는 순간 부터 시작 페이지Activity호출onCreate()방법 사이 의 이 시간 대 를 말한다.
2.냉 가동 시간 동안 무슨 일이 있 었 나 요?
      우선 하나Activity를 열 었 을 때 무슨 일이 일 어 났 는 지 알 아야 합 니 다.하나Activity가 열 렸 을 때 이Activity소속Application이 시작 되 지 않 았 다 면 시스템 은 이Activity에 프로 세 스 를 만 들 것 입 니 다.(하나의 프로 세 스 를 만 들 때마다 한 번Application을 호출 하기 때문에ApplicationonCreate()방법 은 여러 번 호출 될 수 있 습 니 다.프로 세 스 생 성과 초기 화 에 시간 이 걸 릴 수 있 습 니 다.이 시간 에WindowManager앱 의 테마 스타일 에 있 는 창 배경(windowBackground)을 미리 보기 요소 로 불 러 온 다음 에 실제 레이아웃 을 불 러 옵 니 다.이 시간 이 너무 길 고 기본 배경 이 검은색 이나 흰색 이면 사용자 에 게 착각 을 줄 수 있 습 니 다.이 앱 은 끊 기 고 원활 하지 않 아 자 연 스 럽 게 사용자 체험 에 도 영향 을 미 쳤 다.
효과 도 보기:

최적화 되 지 않 음

최적화 방안 1

최적화 방안 2
2.시작 할 때의 흰색 화면/검은색 화면 제거
사용자 가 모 바 일 데스크 톱 앱 을 클릭 할 때 보 이 는 블랙 스크린 이나 화이트 스크린 은 화면 렌 더 링 전의 첫 번 째 프레임 입 니 다.만약 에 글 머리 에 있 는 두 가지 문 제 를 이해 하면 이 문 제 를 해결 하 는 것 이 매우 쉽 습 니 다.Theme 안의windowBackground을 우리 가 사용자 에 게 보 여주 고 싶 은 화면 으로 설정 하면 됩 니 다.여기 에는 두 가지 방법 이 있 습 니 다.
1.배경 그림 을 저희 앱 의 로고 그림 으로 설정 하고 앱 을 시작 하 는 안내 로 서 현재 시중 에 있 는 대부분의 앱 도 이렇게 하고 있 습 니 다.

  <style name="AppWelcome" parent="AppTheme">
    <item name="android:windowBackground">@mipmap/bg_welcome_start</item>
  </style>
2.배경 색 을 투명 색 으로 설정 합 니 다.그러면 사용자 가 데스크 톱 앱 사진 을 클릭 할 때'바로'앱 에 들 어가 지 않 고 데스크 톱 에 잠시 머 물 러 있 습 니 다.사실은 이때 앱 은 이미 작 동 되 었 습 니 다.우리 가 생각 하 는 Theme 안의windowBackground색 을 투명 하 게 설정 하고 핸드폰 앱 업 체 에 냄비 를 강제로 던 졌 습 니 다(핸드폰 반응 이 너무 느 립 니 다.하하).사실 지금 위 챗 도 이렇게 하고 있 으 니 믿 지 않 으 면 해 보 세 요.

  <style name="Appwelcome" parent="android:Theme.Translucent.NoTitleBar.Fullscreen"/>
투명 화 라 는 방법 은 주의해 야 할 점 이 있 습 니 다.Theme 를 직접 도입 하면 다음 과 같은 이상 이 발생 할 수 있 습 니 다.

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
이것 은 호 환 되 지 않 는 Theme 를 사 용 했 기 때 문 입 니 다.예 를 들 어 제 가 있 는Activity이 계승 되 었 고 해결 방안 은 간단 합 니 다.
1.호환성 이 없 는Activity집적AppCompatActivity2.Activity방법 에 있 는Activity이전에 우리 원래 APP 의 Theme 설정

public class MainActivity extends AppCompatActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      setTheme(R.style.AppTheme);
      super.onCreate(savedInstanceState);
  }
}
위의 두 가지 방법,우 리 는 모두 Theme 를 대응 하 는AppCompatActivity
에 도입 해 야 한다.

    <activity
      android:name=".app.main.MainActivity"
      android:theme="@style/AppWelcome"
      android:screenOrientation="portrait">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
3.시동 최적화
위의 방법 은'초 열 림'앱 의 효 과 를 얻 을 수 있 지만 실제 속도 가 아니다.Activity 를 만 드 는 과정 에서 일련의onCreate()층 의 조작 을 거 친다.일상적인 개발 에서 우 리 는super.onCreate(savedInstanceState)유형 을 다시 쓴 다음 에Activity에서 초기 화 작업 을 한다.예 를 들 어 사용자 표 지 를 저장 하 는 정태 화framework등 이다.제3자 SDK 초기 화 등
여기에 몇 가지 건 의 를 드 리 겠 습 니 다.
1.Application업무 수행 에 참여 하지 못 하 게 합 니 다.
2.Application에서 시간 을 소모 하 는 작업 을 하지 마 십시오.예 를 들 어 일부 개발 자 들 은 자신의 앱 에서 일련의 폴 더 나 파일(예 를 들 어 저 자신)을 사용 합 니 다.이런 I/O 작업 은'확실히 사용 해 야 할 때 다시 만 듭 니 다'또는 데이터 베 이 스 를 만 드 는 작업 에 넣 어야 합 니 다.
3.정적 변수 로TOKEN에 데 이 터 를 저장 하지 마 십시오.
물론 이것 은 절대적 인 이상주의 이다.위의'싫어'라 는 두 글 자 를 붙 이기 전에'가능 한'두 글 자 를 붙 여 라.왜냐하면 실제 개발 에서 이렇게 하 는 것 은 확실히 우리 로 하여 금 많은 편 의 를 얻 게 할 것 이다.
참,보충 하 는 것 도 중요 하 다.구조의 복잡성,구조의 깊이 를 최대한 줄 이 는 것 이 중요 하 다.왜냐하면Application그 리 는 과정 에서 측정 도 성능 을 소모 하기 때문이다.
자,이상 은 안 드 로 이 드 콜 드 가동 실현 앱 이 초 단위 로 열 리 는 모든 내용 입 니 다.이 글 의 내용 이 여러분 의 일상적인 앱 개발 에 도움 이 되 고 궁금 한 점 이 있 으 면 댓 글로 소통 할 수 있 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기