2017-01-29 1 views
0

많은 검색을했지만 내 대답을 찾지 못했습니다. 나는 첫 번째 점심 사용자에게 뷰 페이지로 만든 환영 화면이 표시되는 안드로이드 응용 프로그램을 개발했습니다. 문제는 내 응용 프로그램에 환영 활동 코드를 넣는 것이 가장 좋은 곳인지 모르겠습니다. 이 될 수환영 활동 코드를 넣을 곳

가장 간단한 방법이 바로 주먹 라인의 주요 활동 심지어 내가 공유 기본 설정 값을 얻을 후 주먹 점심 여부를 평가하기 위해 시도에서 onCreate 방법 안에 super.onCreate(), 전 . 그럴 경우 아래에 표시된 환영 활동을 시작하십시오.

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
     boolean welcome = sharedPreferences.getBoolean(getString(R.string.key_welcome), true); 
     if (welcome) { 
      // go and start welcoming activity 
      Intent intent = new Intent(this, WelcomeSlideActivity.class); 
      startActivity(intent); 
     } 


     super.onCreate(); 
    } 
} 

그러나 다른 방법으로 해결할 수 있습니다. Application 클래스입니다. Application 클래스는 응용 프로그램의 다른 코드보다 먼저 실행되는 첫 번째 클래스이기 때문에. 그래서 나는 그래서 내가 하나가 선택할 수있는 최선의 선택이 될 것이다, 딜레마에서 오전

public class App extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
     boolean welcome = sharedPreferences.getBoolean(getString(R.string.key_welcome), true); 
     if (welcome) { 
      // go and start welcoming activity 
      Intent intent = new Intent(this, WelcomeSlideActivity.class); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intent); 
     } 
    } 
} 

아래와 같이 내가 거기에 그것을 할 좋은 것, 생각했다. 그리고 안드로이드 개발자 웹 사이트 나 그 어디에도 그런 문서가 없기 때문에 나는 올바른 방법으로 그것을하고 있는지 확신 할 수 없다.

+0

사용자가 처음 앱을 시작한 후 WelcomeSlideActivity를 한 번만 표시하고 싶습니까? – Yupi

+0

네, 전문적인 앱처럼 최선을 다하고 싶습니다. – xFighter

+0

간단히'if'checking으로'SharedPreferences'라는 대화 상자를 내 앱에 팝업으로 표시했는데 여전히 훌륭하게 작동합니다. 물론 사용자가 응용 프로그램을 다시 설치하면 시작 대화 상자가 다시 표시됩니다. – Yupi

답변

2

올바른 방법으로 스플래시 화면을 만드는 방법을 살펴보십시오. https://www.bignerdranch.com/blog/splash-screens-the-right-way/

Application 클래스를 사용하는 경우는 주로 전역 응용 프로그램 상태를 유지하기위한 응용 프로그램 전체 구성에 사용됩니다. 따라서 여기에서 활동을 시작하는 것은 그 목적이 앱 전체에 대한 상태를 제공하는 것이 아니라 애플리케이션에 진입 점이되는 것으로 바뀌면서 많은 의미를 갖지 않습니다.

더욱이 WelcomeSlideActivity을 첫 번째 런처 활동으로 설정하지 않으시겠습니까? 그런 다음 거기에서 히스토리없이 다음 활동을 시작할지 아니면 현재보기를 표시할지 여부에 대한 논리를 작성할 수 있습니다.

이상적으로는 WelcomeSlideActivity 또는 MainActivity 중 무엇을 표시할지 결정하는 스플래시 화면 작업을 만들어야합니다. 이 앱의 장점은 어떤 앱을 실행할지 결정할 때 사용자에게 앱이 시작되었다는 것을 알리는 스플래시 화면이 표시된다는 것입니다.

+0

내가 welcomeSlideActivity를 시작 프로그램 활동으로 설정했다고 가정 해 보겠습니다. 처음에는 활동이 환영할만한 것을 보여줄 것입니다. 그러나 매번 출시 될 때마다 다음 활동으로 사용자를 데려다가 메모리를 낭비하거나 성능을 저하시키지 않을 것입니다. 그래서 당신은 어떻게 생각하십니까? – xFighter

+0

@xFighter 환영 인사 화면을 개발하고 매 점심 시간을 표시하는 데 신경 쓰면 표준 행동은 첫 번째 점심 식사에만 표시하는 것입니다. SharedPreference에 플래그를 유지해야하기 때문에 구현하기가 간단합니다. – fluffyBatman

+0

@blackpanther 당신이 준 링크는 도움이된다고 생각합니다. 그러나 나는 어떤 활동도하지 않고 똑같이 할 수 있습니다. 다음 코드로 매니페스트와 주요 활동에 테마와 구성이 필요합니다. setTheme (R.style.SplashAppTheme); – xFighter