2014-07-16 68 views
0

我正在爲使用服務的Android開發API,但繼承有一些麻煩。Android上的服務和繼承

我想允許未來的用戶定義throwNotification()方法。

基本上我有2類:

public abstract class BluetoothLookUpService extends Service { 

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

    protected abstract void throwNotification(); 

} 

並從用戶可能的擴展類:

public class Test extends BluetoothLookUpService { 

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

} 

我在其他地方開始我的服務是這樣的:

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

而且很明顯它在我的清單中聲明如下:

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

當我使用Test時,服務永遠不會啓動,但當我使用BluetoothLookUpService(當然,沒有在類和方法中指定「抽象」)時工作良好。

回答

1

所有服務必須由清單 文件中的元素表示。任何未聲明的系統將不會被系統 看到,並且永遠不會運行。

您聲明摘要BluetoothLookUpService在清單中,您需要做的是聲明Test。在清單中使用'BluetoothLookUpService'與聲明Service是一樣的,你不能那樣做。

+0

感謝您的回答。 它工作的很好,我沒有看到文件中的這些行。現在發現自己有點愚蠢,但是嘿。 – ilansas