2014-10-13 2 views
0

내 응용 프로그램에 자동 완성 기능이 있습니다. 사전을로드하고 나는 경우에 사전로드 된 항목을 사용하도록해야합니다 (InternalStorage에 파일에 저장MainActivity 시작 전에 WEB에서 값로드

1) AsyncTask를 클래스 때 네트워크를 사용할 수없는) :

지금 나는이 있습니다.

2) 오버라이드 된 onCreate 메소드로 응용 프로그램 클래스. 여기에서 AsyncTask (1)을 실행합니다.

문제는 AsyncTask가 완료되기 전에 검색 필드가있는 MainActivity가 시작되므로 자동 완성이 관련성이없는 (이전) 사전을로드하지 않기 때문입니다.

내 AsyncTask를 완료해야합니다. 보다 빠르지 마세요. MainActivity는 내부 저장소의 사전 파일을로드합니다.

어떻게하면됩니까? 답변 해 주셔서 감사합니다.

UPD : 내 자신의 InternalStorage 클래스와 내부 저장에서 MainActivity 클래스의 해당 I로드 파일

package com.XXX.XXX.app; 

import android.app.Application; 

public class MyApp extends Application { 
    @Override 
    public void onCreate() 
    { 
     super.onCreate(); 
     if (CheckNetworkConnect.check(MyApp.this)) { 
      LoadData getData = new LoadData(MyApp.this); 
      getData.execute(); 
     } 
    } 
} 

: 좋아, 코드가있다. 내가 제대로 이해하면

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      R.layout.dropdown_item, acList); 
    AutoCompleteTextView textView = (AutoCompleteTextView) 
      findViewById(R.id.searchFiled); 
    searchFiled.setAdapter(adapter); 
+0

관련 코드를 알려주세요. – ToYonos

+0

asyncTask가 끝나면 mainActivity를 시작하여 액티비티에서 this를 splashScreen 또는 다른 것으로 호출하십시오. 어떻게에 대한? – Yazan

+0

@ 야잔 그것은 좋은 생각이지만, 스플래시 스크린없이하는 것이 낫습니다. 또는 네트워크를 사용할 수있는 경우에만 SplashScreen을 표시하십시오. 그리고 네트워크가 없다면 즉시 SplashScreen없이 MainActivity를 시작하십시오. 그리고 내가 그런 식으로 - AsyncTask가 끝난 것을 어떻게 처리 할 수 ​​있습니까? – udenfox

답변

0

선택의 여지가 많지 않으므로 작업이 끝날 때까지 기다려야합니다. 그렇지 않은 경우 이전에 언급 한 것과 같이 관련이없는 데이터가 사용됩니다.

  1. 당신은 theTask.get()를 사용하여, 어쩌면해서 ProgressDialog와 함께, 귀하의 활동에 완료 또는 상태 theTask.getStatus()을 확인 할 수 귀하의 작업 기다릴 수

  2. (작업이 활동에서 가시성을 확보해야합니다) 당신 당신의 활동에서 progressDialog와 함께 작업을 시작할 수 있고, 을 OnPostExecute 부분에 채울 수 있습니다.

  3. 스플래시 스크린 활동을 만들 수 있습니다. 스플래시 스크린 활동은 끝내 자마자 MainActivity가 될 것입니다 개시

0

을 드롭 다운을 getted의 ArrayList를 적용

try { 
     acList = (ArrayList<String>) InternalStorage.readObject(MainActivity.this, "aclist"); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     acList = new ArrayList<String>(Arrays.asList("NO FILE")); 
     e.printStackTrace(); 
    } 

그리고, 당신은 검색 필드를 설정하기 전에, MainActivity에서 onCreate에서 사전을로드 할 수 있습니다. 또는 AsyncTaskClass.execute(). get()을 호출하여 AsyncTask가 끝날 때까지 기다릴 수 있습니다. http://developer.android.com/reference/android/os/AsyncTask.html을 확인하십시오.

+0

고마워요! 해결책입니다. – udenfox

관련 문제