당신은 바운드 서비스를 사용해야합니다. 나는 나의 응용에서 비슷한 것을했다. 새로 고침을 클릭하면 백그라운드에서 데이터를 가져와 UI를 업데이트하는 서비스를 호출합니다.
여기에 체크 아웃 내 서비스 : https://github.com/madhur/GAnalytics/blob/develop/src/in/co/madhur/ganalyticsdashclock/AnalyticsDataService.java
@Override
protected void onPostExecute(AnalyticsAccountResult result) {
super.onPostExecute(result);
App.getEventBus().post(result);
}
활동 : https://github.com/madhur/GAnalytics/blob/develop/src/in/co/madhur/ganalyticsdashclock/MainActivity.java
@Subscribe
public void UpdateUI(AnalyticsAccountResult result) {
ProgressBar progressbar = (ProgressBar) findViewById(R.id.pbHeaderProgress);
LinearLayout spinnerLayout = (LinearLayout) findViewById(R.id.spinnerslayout);
TextView statusMessage = (TextView) findViewById(R.id.statusMessage);
switch (result.getStatus()) {
case STARTING:
statusMessage.setVisibility(View.GONE);
progressbar.setVisibility(View.VISIBLE);
spinnerLayout.setVisibility(View.GONE);
break;
case FAILURE:
statusMessage.setVisibility(View.VISIBLE);
progressbar.setVisibility(View.GONE);
spinnerLayout.setVisibility(View.GONE);
statusMessage.setText(result.getErrorMessage());
break;
case SUCCESS:
statusMessage.setVisibility(View.GONE);
progressbar.setVisibility(View.GONE);
spinnerLayout.setVisibility(View.VISIBLE);
if (result.getItems() != null)
{
this.acProfiles = result.getItems();
MyAdapter myAdapter = new MyAdapter(acProfiles, this);
listView.setAdapter(myAdapter);
UpdateSelectionPreferences();
if (result.isPersist() && acProfiles.size() > 0)
{
if (App.LOCAL_LOGV)
Log.v(App.TAG, "saving configdata");
try
{
appPreferences.saveConfigData(acProfiles, credential.getSelectedAccountName());
}
catch (JsonProcessingException e)
{
Log.e(App.TAG, e.getMessage());
}
}
}
break;
}
}
또한 도움이 오토 라이브러리를 사용하는 것입니다 자세한 정보가 없으면
http://square.github.io/otto/
고맙습니다 답장을 보내 .. : 당신이 당신의 서비스 클래스 내부에 목록보기 데이터를 변경 한 경우,
ListView에 새 데이터를 적용하려면이 코드를 작성 : MainActivity 내부에이 코드를 넣어 사실 당신은 옳습니다.하지만 제 질문은 제 활동에서 그 데이터 집합이 어떻게 변경되었는지를 어떻게 알 수 있습니까? 내 봉사에서 어떻게 받아 들여야합니까? – GaneshKumar
나는이 방법을 개인적으로 할 필요가 없기 때문에 어느 방법이 가장 좋은지 말할 수는 없지만 [BroadcastReceiver] (http://developer.android.com/reference/android/content/BroadcastReceiver.html)는 당신을 위해 일합니다. 이것은 서비스에 의해 브로드 캐스트 된 메시지를 처리 할 수있는 추상 클래스입니다. 서비스는 새로운 문자열을 발견하면 sendBroadcast() 메소드를 사용하며, 활동이 BroadcastReciever로 등록되어 브로드 캐스트가 수신 될 때 어떤 조치를 수행합니다. – csmckelvey