Android:サービスを停止する際の奇妙な問題
-
27-09-2019 - |
質問
そのようなサービスを開始するアクティビティがあります。
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) {}
}
}
}
私は最初にサービスを殺そうとしました
stopService(new Intent(FeaturedActivity.this, service.getClass()));
しかし、これはうまくいかなかったので、代わりに使用しました
try {
Class serviceClass = Class.forName(service.getClassName());
stopService(new Intent(FeaturedActivity.this, serviceClass));
}
catch (ClassNotFoundException e) {}
そして、それはうまくいきました!誰かが違いを説明できますか?
ありがとう
解決
stopService(new Intent(FeaturedActivity.this, service.getClass()));
この場合、 service
aです 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);
所属していません StackOverflow