2

ここでの概念について混乱しています。デバイスが起動したときに通知を受け取るには(たとえば、アラームを再スケジュールする目的で)、boot_completedブロードキャストレシーバーが必要であるという多くのチュートリアルを読みました。

ただし、紛らわしい部分は、「登録(放送受信機)」のようなメソッドが表示されないことです。人々はブロードキャストレシーバークラスを持っているだけで、それをマニフェストに持っています。しかし、ある種の登録プロセスは必要ありませんか? システムは、登録によって明示的に通知されない限り、ブート イベントをリッスンするブロードキャスト レシーバ y を持つ APP x があることをどのように認識しますか?

クリックリスナーを作成するようなものですが、クリック時に呼び出されるようにボタンに登録/追加する必要があります。

誰かが私のために混乱を解消できますか?

ありがとうございました

ありがとう

4

2 に答える 2

2

人々はただ放送受信機クラスを持っていて、それをマニフェストに持っています。しかし、何らかの登録プロセスは必要ありませんか?

<receiver>マニフェストの要素には子要素があり、受け取りたい構造<intent-filter>を文書化しています。Intent

<?xml version="1.0" encoding="utf-8"?>
<manifest android:versionCode="1"
          android:versionName="1.0"
          package="com.commonsware.android.sysevents.boot"
          xmlns:android="http://schemas.android.com/apk/res/android">

  <uses-sdk android:minSdkVersion="3"
            android:targetSdkVersion="6" />
  <supports-screens android:largeScreens="false"
                    android:normalScreens="true"
                    android:smallScreens="false" />
  <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  <application android:icon="@drawable/cw"
               android:label="@string/app_name">
    <receiver android:name=".OnBootReceiver">
      <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
      </intent-filter>
    </receiver>
  </application>
</manifest>

ここでは、放送を受信するためにBroadcastReceiver、という名前のを登録しています。OnBootReceiverBOOT_COMPLETED

登録を通じて明示的に通知されない限り、システムは、ブートイベントをリッスンしているブロードキャストレシーバーyを持つAPPxがあることをどのように知るのでしょうか。

Androidは「登録を通じて明示的に通知」されます。「登録」は、アプリのJavaコードではなく、マニフェストを介して行われることがあります。

于 2012-10-13T16:51:50.860 に答える
1

簡単な答え:このクラスのインスタンスをContext.registerReceiver()に動的に登録するか、AndroidManifest.xmlのタグを介して実装を静的に公開することができます。

于 2012-10-13T16:53:30.660 に答える