2017-08-02 14 views
0

サービスからインターフェイスを実装しようとしています(推測すると良い方法ではありません)が、インターフェイスメソッドは呼び出されません。バックサービスに対話する方法サービスからインターフェイスメソッドを呼び出す

class TrackerService : Service(), LocationUpdateListener { 

override fun onCreate() { 
    startLocationTracking(context) // context as this service with LocationUpdateListener, next it should trigger onLocationUpdated after some time 
} 

override fun onLocationUpdated(location: Location?) { 
    // Not called 
} 

// ... Service lifecycle methods 
} 

、私はそれにいくつかのアクションを行う際のonCreateですか?

答えて

0

インターフェイスの使い方に多少の混乱が生じることがあります。インタフェースは、異なるクラスにメソッドを抽象化する方法です。あなたのサービスがインタフェース内のメソッドを呼び出すためのものであれば、他のクラスがそのメソッドを実装したいと思う可能性があります。そのクラスのリファレンスをサービスに渡し、アクションが完了すると、サービスはオブジェクト名とメソッド名を呼び出します。

あなたのサービスに直接インターフェイスを実装することは、他のクラスがそれを使用するときにサービスがこれらのメソッドを保証することを意味します。

最初のケースが達成したいかどうかを確認してください。

編集:コールバック用のインターフェイスが必要なメソッドを呼び出す場合は、thisを渡してください。独自のインターフェイスを作成している場合は、メソッドが実際にどこかで呼び出されていることを確認してください。例ではそうではないようです。

関連する問題