私はアンドロイドが初めてです.アンドロイドのサービスは、モバイルのスイッチがオンになったときに自動的に開始されますか??はいの場合、それは素晴らしいことです.いいえの場合、特定のサービスを開始する方法を誰かが説明できますか??
6 に答える
いいえ、サービスはデバイスの起動後に自動的に開始されません。ただし、デバイスの起動が完了したときにサービスを開始するために android.intent.action.BOOT_COMPLETED を次のように登録できます。
AndroidManifest.xml :
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED">
</uses-permission>
<receiver android:name=".BootReceiver" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</receiver>
BootReceiver.java :
public class BootReceiver extends IntentReceiver
{
static final String ACTION = "android.intent.action.BOOT_COMPLETED";
public void onReceiveIntent(Context context, Intent intent)
{
if (intent.getAction().equals(ACTION))
{
context.startService(new Intent(context,YourService.class));
}
}
}
ユーザー ベースのアプリケーション サービスが自動的に開始されない
以下のコードを追加する必要があります
<receiver android:name="com.wallpaper.StartReceiver" xmlns:android="#unknown">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
ここからブロードキャストレシーバーで何かを読んだほうがいい http://www.vogella.com/articles/AndroidBroadcastReceiver/article.html
ブロードキャスト レシーバーは、システム イベントまたはアプリケーション イベント (この場合は ACTION_BOOT_COMPLETED) を登録できる Android コンポーネントです。
Androidがロードされるとすぐに、起動が完了したというメッセージをブロードキャストし、そのイベントを受信するように登録されているすべてのアプリケーションがそれを受信し、あなたは自分のことをすることができます...
マニフェスト ファイルに追加することで、以下のコードを使用して実行できます。
<receiver android:name="some_pagacakge_name" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
ここにいくつかのリンクがあり ます http://www.grokkingandroid.com/android-tutorial-broadcastreceiver/
それは、開始したいサービスの種類とそのサービスをいつ開始したいかの要件によって異なります。起動時に特定のサービスを開始する場合は、Devangi Desai が述べたように受信者を登録してから、startService()
メソッドを発行する必要があります。
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
if (intentAction.equals(Intent.ACTION_BOOT_COMPLETED))
context.startService(new Intent(context,
ConnectionService.class));
}
}
これConnectionService.class
は、サービスを拡張し、サービスの実装を持つクラスです。
サービスを開始できますstartService(intent)
電話の再起動時に実行するには
マニフェスト ファイルに次のアクセス許可を追加します
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Broadcast Receiver
いいねを宣言した
<receiver android:name=".BootReceiver"
android:label="BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
その後
public class BootReceiver extends BroadcastReceiver {
private static final String TAG="BootReceiver";
@Override public void onReceive(Context context,Intent intent){
try{
context.startService(new Intent(context,yourServiceName.class));
Log.i(TAG,"Starting Service yourServiceName");
}catch(Exception e){
Log.e(TAG,e.toString());
}
}
}
マニフェストで起動時に開始するように明示的に定義しない限り、これらは自動的に開始されません。これを行うには、アクションを追加する必要があります
<action android:name="android.intent.action.BOOT_COMPLETED" />
サービスのマニフェスト ファイルに。
例:
<receiver android:name="MyStartupIntentReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
</receiver>
サービスの詳細については、この公式ガイドをお読みください: https://developer.android.com/guide/components/services.html