簡體   English   中英

嘗試從Android中的活動啟動服務時發生ClassNotFoundException

[英]ClassNotFoundException when trying to start a Service from an Activity in Android

我正在嘗試從這樣的活動中啟動服務:

startService(new Intent(MyActivity.this,
                MyService.class));

但是有一個問題。 什么都沒發生。 我在后台調試,可以看到BootClassLoader在ClassNotFoundException上跳閘。 我不知道怎么回事,因為我在清單文件中輸入了Service類,如下所示:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true" android:enabled="true">
        <service android:name=".MyService" android:exported="false"></service>
        ...
    </application>

它與MyActivity在同一軟件包中。 我有點瘋了。 可能是什么問題? 我調試到MyService,但是onCreate()onStartCommand()均未調用。

這種廢話有時會發生。 嘗試清理項目...

另外,如果要從其他程序包啟動服務,請嘗試使用完整的程序包,然后使用類名。

Intent intent = new Intent();
intent.setClassName("com.example.Something", "com.example.Something.MyService");
startService(intent);

只是一個想法:如果您轉到項目的“ bin”文件夾,則應該有“ * .apk”文件。 將其重命名為zip,解壓縮並調查是否有您的服務類別。 我懷疑smth在構建步驟時出錯,並且您的課程不在apk中。 刪除bin文件夾中的所有內容,並設法從頭開始重建項目。 然后再次解壓縮/檢查。

該服務是否在某些包裝中? 如果是這樣,您可能需要在清單中使用Service類的完整路徑。

嘗試這個:

startService(new Intent(this, MyService.class));

如果仍然有問題,請在Manifest.XML文件中,將包名稱粘貼到服務名稱的開頭,如下所示:

<service android:name="mypackagename.MyService"></service>

不知道為什么在那兒有“導出”代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM