2012-02-20 3 views
0

아래와 같이 비동기 작업을 사용하고 있습니다. 하지만 난 아래 클래스를 사용하고 다른 활동에 따라 onPostExecute 안에 다른 함수를 호출 할 수 있어야합니다. 예를 들어 액티비티가로드 될 때 아래의 클래스를 그대로 사용하지만, 사용자가 액티비티의 listitem을 클릭하면 아래의 같은 클래스를 사용하지만 콜백 함수는 달라야합니다. 안드로이드에서이 작업을 수행 할 수있는 방법이 있습니까? (2 옵션이있는 경우 어쩌면 활동, 예를 들어 인스턴스 또는 일부 enumaration, 또는 부울)안드로이드의 Asyntask

class PerformOPTask extends AsyncTask<Void, String, ServerOutput> { 
    // connector=new JSONConnector(); 
    Connector connector; 
    String curUrl; 
    ServerOutput currentSO; 
    PerformOPTask(String url,ServerOutput serverOutput){ 
     //connector = new UnitTestConnector(); 
     connector = new JSONConnector(); 
     curUrl=url; 
     currentSO=serverOutput; 
    } 

    @Override 
    protected ServerOutput doInBackground(Void... params) { 

     return connector.getData(URLUtils.getFormattedUrl(curUrl),currentSO); 
    } 

    @Override 
    protected void onPostExecute(ServerOutput output) { 
     displayData(output); 
     Toast.makeText(BaseFragmentActivity.this, "Done!", Toast.LENGTH_SHORT).show(); 
    } 
} 

답변

1

당신은이 클래스를 사용하고,() onPostExecute에 호출하는 기능을하는 사람들 식별 할 PerformOPTask 일부 개체를 전달할 수 있습니다.

+0

narek.gevorgyan @의 솔루션을 사용하는 것보다 더 확장 아직 확장 무언가를 제공하는 것입니다 * 여러 클래스에서 AsyncTask를 호출하기에 충분할만큼 * (마리아의 솔루션이 더 많음). AsyncTask 클래스의 내부 멤버에 'Activity' 참조를 저장하고 첫 번째 Toast 매개 변수로 해당 멤버를 사용하면됩니다. – davidcesarino

3

onComplete 메서드 또는 이와 유사한 것을 포함하는 인터페이스를 어댑터에 추가 할 수 있습니다. 그런 다음 AsyncTask의 생성자에서 인터페이스를 추가 할 수 있습니다. 이 같은에서

public interface OnTaskCompleteListener { 
    void onComplete(ServerOuptput output); 
} 

당신의 onPostExecute() 그런 다음 당신이 그에 대한 종속성을 주입 할 필요는 onComplete()

+0

답변 해 주셔서 감사합니다. 제 경우에는 비동기 작업을 호출하는 super 클래스가 있으며 displayData 메소드도 있습니다. 그렇다면 처음으로로드 할 때 슈퍼 클래스 로직을 사용하여 어레이 어댑터를 채우고 데이터를 표시하는 하위 클래스가 있습니다. 이제 사용자가 특정 항목을 클릭하면 동일한 비동기 작업 하위 클래스를 사용하여 데이터를 가져 오려고합니다. 이 경우 하위 클래스의 인스턴스를 전달하면 아무런 이점도 얻지 못할 것입니다. 어떻게 든 내 asynctask 호출을 생성자 또는 더 나은 방법으로 전달하는 메소드를 만들 수 있기를 바랬습니다. – sab

0

모두 답이 맞다 호출 할 수 있습니다. 그리고 personnaly 나는 AsyncTasks의 내 자신의 하위 클래스의 생성자 안에 그들을 삽입하는 것을 선호합니다.

@Maria Neumayer의 솔루션의 장점은,보다 일반적인 더 추상적이고 나는이 구현 쉽게 생각