ホームページ >Java >&#&チュートリアル >Android サービスが起動時に自動起動しないのはなぜですか?
起動時に Android サービスが自動起動する
問題:
IntentService を開始するように設定しているにもかかわらずシステム起動時に自動的にサービスが開始されると、サービスは期待どおりに初期化されません。トラブルシューティングでは、問題の原因に関するエラー メッセージや手がかりは得られませんでした。
回答:
Android OS の起動時にサービスを開始するには、次のような包括的なアプローチがあります。必須。段階的な解決策は次のとおりです:
AndroidManifest.xml:
マニフェスト ファイルに次のものが含まれていることを確認します:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.app" android:versionCode="1" android:versionName="1.0" android:installLocation="internalOnly"> <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.YOUR_CUSTOM_PERMISSION" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <service android:enabled="true" android:name=".MyService" /> <receiver android:name=".BootBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application> </manifest>
BootBroadcastReceiver.java:
作成システム起動イベントをリッスンしてサービスを開始するブロードキャスト レシーバー:
public class BootBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { Intent serviceIntent = new Intent(context, MyService.class); context.startService(serviceIntent); } } }
MyService.java:
サービス クラスを実装します:
public class MyService extends Service { @Override public IBinder onBind(Intent intent) { return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { // Perform service tasks here return START_NOT_STICKY; } @Override public void onDestroy() { // Clean up resources here } }
追加注:
以上がAndroid サービスが起動時に自動起動しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。