2010-10-30 2 views
0

У меня есть деятельность, которая запускает услугу, как что:Android: Weird проблема в прекращении службы

Intent youtubeIntent = new Intent(this, YoutubeFeedService.class); 
    service = startService(youtubeIntent); 

и определить, когда служба останавливается я использую широковещательный приемник:

@Override 
public void onResume() { 
    IntentFilter filter; 
    filter = new IntentFilter(YoutubeFeedService.NEW_VIDEO_CELL); 
    receiver = new FeaturedReceiver(); 
    registerReceiver(receiver, filter); 
    super.onResume(); 
} 

@Override public void onPause() { 
    unregisterReceiver(receiver); 
    super.onPause(); 
} 



public class FeaturedReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String title = intent.getStringExtra("title"); 


     if (title.equals("-1") || title.equals("1")){ 
      //stopService(new Intent(FeaturedActivity.this, service.getClass())); 
      try { 
       Class serviceClass = Class.forName(service.getClassName()); 
       stopService(new Intent(FeaturedActivity.this, serviceClass)); 
      } 
      catch (ClassNotFoundException e) {} 

     } 

    } 
} 

I первый пытался убить службу с

stopService(new Intent(FeaturedActivity.this, service.getClass())); 

, но это не сработало, так что вместо этого я использовал

try { 
       Class serviceClass = Class.forName(service.getClassName()); 
       stopService(new Intent(FeaturedActivity.this, serviceClass)); 
      } 
      catch (ClassNotFoundException e) {} 

И это действительно сработало! Может кто-нибудь объяснить, в чем разница?

Благодаря

ответ

0
stopService(new Intent(FeaturedActivity.this, service.getClass())); 

В этом случае service является ComponentName. Следовательно, service.getClass() вернет ComponentName.class. Ваша услуга - YoutubeFeedService.class.

Class serviceClass = Class.forName(service.getClassName()); 
stopService(new Intent(FeaturedActivity.this, serviceClass)); 

Казалось бы, проще назвать:

stopService(new Intent(FeaturedActivity.this, YoutubeFeedService.class); 

 Смежные вопросы

  • Нет связанных вопросов^_^