2013-01-14 5 views
0

인 텐트 다운로드 서비스를 만들었으며 다운로드 데이터를 주요 활동의 토스트 및 텍스트로 전달하려고합니다. 다운로드 서비스는 알람 관리자에서 반복해서 시작해야합니다. 어떻게해야합니까?인 텐트 다운로드 서비스에서 변수에 액세스하려면 어떻게합니까?

현재 토스트에는 표시되지 않지만 네트워크 트래픽이 있습니다. 데이터는 다운로드되지만 표시되지 않습니다.

관련 코드 :

public class DownloadService extends IntentService { 

public String response; 

    public DownloadService() { 
    super("DownloadService"); 
    } 

    // Will be called asynchronously be Android 
    @Override 
    protected void onHandleIntent(Intent intent) { 

    //String urldown = intent.getStringExtra("url"); 
    String urldown="http://......"; 

     DefaultHttpClient client = new DefaultHttpClient(); 
     HttpGet httpGet = new HttpGet(urldown); 
     try { 
      HttpResponse execute = client.execute(httpGet); 
      InputStream content = execute.getEntity().getContent(); 

      BufferedReader buffer = new BufferedReader(new InputStreamReader(content)); 
      String s = ""; 
      while ((s = buffer.readLine()) != null) { 
      response += s; 
      } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
     Intent intentsend=new Intent("update"); 
      intentsend.putExtra("downdata",response); 
      sendBroadcast(intentsend); 
    } 
+1

왜 토스트를 사용하나요? 알림은 일반적으로 서비스로부터 어떤 종류의 피드백을 보여줄 필요가있을 때 사용됩니다. –

+0

어떻게해야합니까? 다운로드 데이터를 main.xml에 텍스트로 전달하는 방법은 무엇입니까? – user1977741

+1

서비스와 활동 간의 양방향 통신이 필요한 경우 서비스를 활동에 바인딩 할 수 있습니다. [this] (http://stackoverflow.com/questions/4300291/example-communication-between-activity-and-service-using-messaging) 질문을 확인하십시오. –

답변

1

BroadcastReceiver로 구현 될 수있다 : 당신의 활동에

, 다음 코드를 추가하여 IntentService에 다음

private BroadcastReceiver updateReceiver; 

//... 

@Override 
protected void onResume() { 
    super.onResume(); 

    updateReceiver=new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      //get extras, do some stuff 
     } 
    }; 
    IntentFilter updateIntentFilter=new IntentFilter("update"); 
    registerReceiver(updateReceiver, updateIntentFilter); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 

    if (this.updateReceiver!=null) 
     unregisterReceiver(updateReceiver); 
} 

그리고를 바로 보내 동일한 작업으로 브로드 캐스트 :

Intent intent=new Intent("update"); 
intent.putExtra(...); 
sendBroadcast(intent); 
+0

활동에 대한 데이터를 보내기위한 마지막 부분 ... intentservice 내부? hanleintent 후? 죄송합니다. 새 개발자입니다 ... – user1977741

+0

내 코드를 업데이트합니다 ...보세요 ... 괜찮습니까? – user1977741

+0

감사합니다 !!! 일하 !!!!!! – user1977741

0

나를 위해 개인적으로 수신기가 작동하지 않아 대신 setter 메서드를 사용하여 변수를 설정하고 getter 메서드를 사용하여 특정 작업을 수행하는 단일 클래스를 만들었습니다.

관련 문제