2017-05-16 6 views
0

내가 UI를 업데이트 할 수있는 서비스 및 배경 스레드를 배우려고 노력하고 제대로 작동하지, 여기,이 서비스가 MainActivity에서 startService() 메소드를 호출하여 시작, 문제는 다음과 같습니다 루프는i더 큰 값을 실행할 때 토스트는 모든 값에 대해 표시되지 않습니다 (흥미롭게도 루프가 표시되지 않은 토스트). 그러나 이번에는 10/20 등으로 테스트하고 완벽하게 작업했습니다. 여기 서비스

MyService.java의, 코드입니다 : 안드로이드 서비스, 배경 작업, 방송 수신기에 매우 초보자를위한 몇 가지 정말 유용한 리소스에 대한

public class MyService extends IntentService { 

    Handler mhandler; 

    public MyService() { 
     super("Hello"); 
    } 

    @Override 
    public void onCreate() { 

     Toast.makeText(this, "Service Starting!", Toast.LENGTH_SHORT).show(); 
     super.onCreate(); 

     mhandler = new Handler(); 

    } 


    @Override 
    protected void onHandleIntent(@Nullable Intent intent) { 


     mhandler.post(new Runnable() { 
      @Override 
      public void run() { 

       int i; 
       for (i = 0; i < 100; i++) { 
        Toast.makeText(MyService.this, "i is: " + i, Toast.LENGTH_SHORT).show(); 
       } 
       Toast.makeText(MyService.this, "finally i is: "+i, Toast.LENGTH_SHORT).show(); 
      } 
     }); 


    } 
} 

요청. 나는 developer.android.com (초보자에게 도움이되지 않음), www.vogella.com 등을 가지고 있습니다. 미리 감사드립니다.

+2

내 첫 번째 본능에서 토스트에 과부하가 걸렸다 고합니다. (내가 틀렸을 수도있다). 'Log.v ("MY_SERVICE", "i is :"+ String.valueOf (i))'를 대신 사용해보십시오. 코드가 작동하는지 확인하려면 실행하고 logcat – Pythogen

+0

을 확인하십시오. 모든 값은 로그 cat에 표시됩니다! 하지만 왜 축배에!? –

+0

토스트는 디버깅 목적으로 신뢰할 수 없습니다. –

답변

2

안드로이드가 응용 프로그램에서 토스트 대기열을 스팸하지 못하게하기 때문에 처음 몇 가지 값만 보았습니다.

@David Wasser가 OP 포스트의 의견에서 언급했듯이 Toast는 신뢰할 수있는 디버깅 도구가 아닙니다. 대신 logcat을 사용하십시오.

Log.v("TAG", "Message")