이 오래된 스레드 내 활동 runOnUiThread 전화 onReceive 브로드 캐스트 리시버의 방법 안에 - (활동의) 의도에 대한 을 브로드 캐스트 리시버를 만들 하지만 방금 여기 스레드에서 구현했기 때문에 필요한 항목을 정확하게 가지고 있습니다.에서는 ProgressBar에 대해 이야기 페이지 아래 더 Rachit 슈라의 답변을 읽어 보시기 바랍니다 :
내 서비스이이 Communication between Activity and Service
: 표시하거나 기각하는
public void sendMessage(int state) {
Message message = Message.obtain();
switch (state) {
case 1://SHOW:
message.arg1 = 1;
break;
case 0:
message.arg1 = 0;
break;
}
try {
messageHandler.send(message);
} catch (RemoteException e) {
e.printStackTrace();
}
}
통화 sendMessage 첨부 (1) 또는 0 서비스 내의 ProgressDialog.
그리고 이것은 내 주요 활동에 다음해서 ProgressDialog는 서비스에서 표시 할 수 없습니다
private ProgressDialog progress;
public class MessageHandler extends Handler {
@Override
public void handleMessage(Message message) {
int state = message.arg1;
switch (state) {
case 0://HIDE
progress.dismiss();
break;
case 1://SHOW
progress = ProgressDialog.show(MainActivity.this, (getResources().getString(R.string.CONNECTING) + "..."), (getResources().getString(R.string.PLEASE_WAIT) + "!")); //show a progress dialog
break;
}
}
}
, 그것은 활동이나 조각에서 호출해야합니다. 필요한 모든 코드를 추가하고 필요에 따라 잘 작동하기를 바랍니다. 솔직하게 말해서 나는 메시지 처리기가 어떻게 작동하는지 모르지만 그것은 나를 위해 일한다! 명명은 아마도 lol 중 가장 좋지 않습니다. 죄송합니다.
하지만 OP는 서비스에서이 작업을 수행하려고 했으므로 AsyncTask에서도 ProgressDialog를 실행할 적절한 컨텍스트가 없습니다. –