私は多くの記事でサービスが利用された直後にサービスを取り除く必要があることを読みました。 OSGiフレームワークは、あなたの バンドルの各サービスの利用回数を維持hereServiceTrackerはいつServiceReferenceを取り消しますか?
からだけでなく、私は
//1. get service ServiceReference reference = bundleContext.getServiceReference(Foo.class.getName()); Foo foo=(Foo) bundleContext.getService(reference); //2. use service foo.foo(); //3. unget service bunldeContext.ungetService(reference)
を意味します。
これは片側からのものです。別の側面から、osgiサービスが出て行くので、動的な世界では、osgiサービスへの参照を保持することは悪い習慣ですが、必要なときにサービスを取得することをお勧めします。
このステートメントが正しい場合、ServiceTrackerはどうなりますか?私が理解しているように、サービスとServiceReferenceの両方の参照はサービスが来るのを保ち、サービスが実行されるまで保ちます。しかし、ServiceReferenceは、サービスが使用されたときのように、そんなに忘れる必要はありませんか?またはServiceTrackerの場合は、時間を使用しているサービス=トラッカーが開いている時間を意味しますか?
ですから、主な質問は、いつServiceTrackerがServiceReferenceをいつ取り除き、なぜですか?