2012-05-24 4 views
1

Android 애플리케이션 용 스플래시 화면을 만들려고합니다. 로그인 페이지에서 스플래시 작업이 시작되고 모든 로그인 처리 작업이 완료됩니다. 그런 다음 로그인 성공 여부를 부울 값으로 반환합니다. 그러나 XML 레이아웃 컨텐츠가로드되기 전에 로그인 처리가 완료됩니다. 이 문제를 어떻게 해결할 수 있습니까?액티비티가 충분히 빠르게 콘텐츠를로드하지 않습니다.

이 내 시작 화면 활동이다 :

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    Bundle extras = getIntent().getExtras(); 
    if(extras !=null) 
    { 
     url = extras.getString("url"); 
    } 

    setContentView(R.layout.splashscreen); 
    url += "login/?userName=" + Login.loginName + "&password=" + Login.password; 

    DomLoginParser parser = new DomLoginParser(url); 
    if(parser.parse()) 
    { 
     Login.loginSuccessful = true; 
    } 
    else 
    { 
     Login.loginSuccessful = false; 
    } 

    finish(); 
} 

답변

3

이동 로그인을 수행 할 수 AsyncTask를을 사용하여에서 onCreate 호출 아웃 로그인. 당신이하고있는 일은 내용을 보여주기 전에 활동을 끝내는 것입니다. onCreate 호출이 완료된 후에 만 ​​activityView에 contentView가 표시됩니다 ...

0

DomLoginParser의 역할을 알지 못하고 Login 클래스가 정적 인 것으로 생각하지만 왜 그 내부에서 finish() 메소드를 호출합니까? onCreate()?

문제는 바로 활동을 중단하는 것입니다.

finish() 호출을 제거하십시오.

하면

DomLoginParser parser = new DomLoginParser(url); 
if(parser.parse()) 
{ 
    Login.loginSuccessful = true; 
} 
else 
{ 
    Login.loginSuccessful = false; 
} 

이 당신이 로그인에 대해 수행하고 Thread.sleep를()를 호출 (하지만이 응답하지 응용 프로그램을 생성 할 수 있음을 알고, 약간의 시간이 볼 스플래시 화면을 할 모든입니다 너무 많은 시간 동안 잠을 자면) 또는 단순히 별도의 프로세스 (Asynctask 또는 스레딩 화면에 완료라고 말한 다른 스레드와 연관된 스레드 핸들러)를 작성하십시오. 이 같은

0

시도 뭔가 :

private class LoginChecker extends AsyncTask<Void, Void, Void> { 

     protected Void doInBackground(Void... args) { 
       DomLoginParser parser = new DomLoginParser(url);  
       if(parser.parse()) { 
        Login.loginSuccessful = true;  
       } else {   
        Login.loginSuccessful = false;  
       }  
      return null;  
     }  

     protected void onPostExecute(Long result) {   
      // finish the activity  
     } 

    } 

는이 전화의 라인을 따라 뭔가에에서 onCreate 메소드를 업데이트하려면 :

@Override   
public void onCreate(Bundle savedInstanceState) {     
     super.onCreate(savedInstanceState);      
     Bundle extras = getIntent().getExtras();    
     if(extras !=null) {     
     url = extras.getString("url");    
     }      
     setContentView(R.layout.splashscreen);    
     url += "login/?userName=" + Login.loginName + "&password=" + Login.password;      
     new LoginChecker.execute(); 
}  
관련 문제