2014-07-16 2 views
0

Je développe une API pour Android en utilisant un service, mais j'ai quelques problèmes avec l'héritage.Services et héritage sur Android

Je souhaite autoriser le futur utilisateur à définir la méthode throwNotification().

Fondamentalement j'ai 2 classes:

public abstract class BluetoothLookUpService extends Service { 

    //Lot of code here (onCreate(), onStartCommand()...) 

    protected abstract void throwNotification(); 

} 

Et la classe possible étendue de l'utilisateur:

public class Test extends BluetoothLookUpService { 

    @Override 
    protected void throwNotification() { 
     //Some code written by the user 
    } 

} 

Je commence mon service ailleurs comme ceci:

Intent i = new Intent(context, Test.class); 
context.startService(i); 

Et, évidemment, il est déclaré dans mon Manifeste comme ceci:

<service 
     android:label="@string/app_name" 
     android:name="BluetoothLookUpService"> 
    </service> 

Le service n'est jamais lancé lorsque j'utilise Test mais fonctionne bien lorsque j'utilise BluetoothLookUpService (bien sûr sans spécifier "abstract" sur la classe et les méthodes).

Répondre

1

Tous les services doivent être représentés par des éléments dans le fichier manifeste . Tout ce qui n'est pas déclaré ne sera pas vu par le système et ne sera jamais exécuté.

Vous déclarez abstrait BluetoothLookUpService dans le manifeste et ce que vous devez faire est de déclarer Test. Utiliser 'BluetoothLookUpService' dans le manifeste est exactement la même chose que de déclarer Service, vous ne pouvez pas faire cela.

+0

Merci pour votre réponse. Cela fonctionne très bien, je n'ai pas vu ces lignes dans le Doc. Trouve-moi un peu bête en ce moment mais heh. – ilansas