몇 가지 possibilites 있습니다
귀하의 서비스에의 브로드 캐스트 (sendBroadcast)와 활동을 보낼 수 있습니다 단지 따라 broacastReceiver를 등록 할 필요가 당신의 서비스에 구현했습니다. 뭐 그런 : 서비스 : 응용 프로그램의 당신의 AndroidManifest를에
Intent intent = new Intent();
intent.setAction("youAction");
intent.putExtra("url",uri.toString());
sendBroadcast(intent);
:
<receiver android:name="MyReceiver" >
<intent-filter>
<action android:name="yourAction" />
</intent-filter>
</receiver>
귀하의 활동 :
이
private class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
String url = arg1.getExtras().getString("url");
//Here you can update your UI
}
이 링크를 힐로 수 있습니다 http://www.vogella.com/articles/AndroidBroadcastReceiver/article.html
두 번째 방법은 서비스에 리스너를 등록하는 것입니다. 그 청취자에게 귀하의 서비스에 대해 통지하십시오. 서비스에서
:
그러나
void onSomethingHappened()
{
activityListener.notifyProgressBar();
}
void subscribe(YourInterface listener)
{
actibityListener = listener;
}
In you activity, after start you service:
service.subscribe(this);
, 당신은 계정으로 서비스 구현 (유형)을 수행해야하는 더 나은 솔루션을 촬영합니다.
약 AndroidService 링크가 유용 할 수 있습니다.
그러나 또 다른 중요한 점은 선택 항목 이 비동기 작업의 구현 방식에 따라 달라진다는 것입니다. 각 메소드, preExucute, doInBackground, onProgressUpdate 및 postExecute에서 수행하는 작업에 따라 다릅니다.
AndroidUIThread 외부에서 발생하는 이벤트에서 UI를 업데이트해야하므로 UI를 직접 업데이트하려고하면 문제가 발생합니다. 이 문제를 해결하려면 runOnUiThread 메서드를 사용할 수 있습니다. Handler을 사용할 수 있습니다.
바인딩 된 경우 데이터를 다시 액티비티로 보낼 수 있습니다. – njzk2
AsyncTask 내에서 인터페이스를 업데이트해야합니다. 나는 본드를 사용할 수 있다고 생각하지 않습니까? – Nifhel