0

메인 페이지가 포함되어있어 업로드 관리자 활동에로드 할 이미지가 너무 많아서 얼마나 많은 이미지가 있는지에 따라 몇 초가 걸릴 수 있습니다. 제목이있는 기본 빈 화면만큼 나쁘지 않은 이미지를 표시하면서이 로딩을 수행하기 위해 스플래시 화면을 만들 계획이었습니다. 나는이 일을했다. setcontentview()가 실행되지만 표시되지 않는다는 점을 제외하면 제대로 작동한다.안드로이드 비동기 스플래시 화면에 내 애플 리케이션에

public class SplashScreen extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash_screen); 


    load l=new load(); 
    l.execute(this); 
} 


class load extends AsyncTask<Activity, Object, Object>{ 

    @Override 
    protected Object doInBackground(Activity... a) { 
     // TODO Auto-generated method stub 


    Log.i("ss", "splash"); 
     Intent intent = new Intent(a[0], UploadManager.class); 
     startActivity(intent); 
     a[0].finish(); 


     return null; 
    } 

} 
} 

아무에게도 제안이 없나요? 그리고 세부 사항을 묻는 데 자유롭게 나는 그것을 모두 잘 설명했다고 생각하지 않는다.

편집 :

빠른 응답을 주셔서 감사합니다.

Intent intent = new Intent(a[0], UploadManager.class); 
    startActivity(intent); 
    a[0].finish(); 

내에서 onCreate 방식으로 이미지를 의미 즉시 완료 실행되지 않은 것 : 내가 문제가 내가 올바른 목적을 위해 시작 화면을 사용하지 않는 한이 있다고 생각하지만 는 프로세스가 관여 스플래시 화면이 끝날 때까지 내가 대신 한 것은 asynktask에 내 그리드를 로딩하는 것으로 바뀌 었습니다. 내 이미지를 거기에 넣는 것뿐입니다.

이제 몇 초 후에 나타나는 이미지가 빠르게로드됩니다. 나는 어떤 종류의 진도 대화를 구현할 것이다.

비슷한 문제가있는 사람은 누구나 내가 가지고있는 것보다 효율적으로 로딩을 우선시해야합니다.

답변

1

당신은 l.execute (이)에 당신이 활동 인스턴스를 통과 한 클래스 부하상황을 전달하고 있습니다. 당신은이 방법으로 그것을 할 수 있고 당신의 doInBackground 방법은 이미지 다운로드를 finishs 때 실행됩니다 class load extends AsyncTask<Activity, Object, Object>{ 클래스에서 나를 위해 마법처럼

public class SplashScreen extends Activity{ 


    private static int SLPASH_TIME_OUT = 3000; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_splash); 

     new Handler().postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       Intent i = new Intent(SplashScreen.this, MainActivity.class); 

       startActivity(i); 
       finish(); 
      } 
     }, SLPASH_TIME_OUT); 
    } 
} 
0

재정 onPostExecute 방법을 사용할 수 있습니다. onPostExecute에서 당신은 당신의 다음 활동을 열 수 있습니다

같은

protected void onPostExecute(Void unused) { Intent intent= new Intent(this, next.class); startActivity(intent); }

관련 문제