I zwei Modul haben, app und outersheme, gibt es eine MainBroadcastReceiver
in Modul app (Broadcast
erstreckt), besteht ein MainActivity
ist (Verlängerung Activity
) in outersheme, der Code wie folgt ist:Wird die App Broadcast empfangen, wenn sie nicht gestartet wird?
outershceme MainActivity
Kerncode:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.activity: // start SecondActivity in app module by implicit
Intent activityIntent = new Intent("SecondActivity");
activityIntent.setData(Uri.parse("SteveqiSecondActivity://"));
startActivity(activityIntent);
break;
case R.id.broadcast: // start MainBroadcastReceiver in app module by implicit
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("Broadcast");
// add this the app module may be wakeup.
broadcastIntent.setData(Uri.parse("SteveqiBroadcast://"));
sendBroadcast(broadcastIntent);
default:
break;
}
}
app Manifest
Kern-Code:
<activity
android:name="com.twlkyao.myscheme.SecondActivity"
android:label="@string/title_activity_second"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="SecondActivity" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="SteveqiSecondActivity" />
</intent-filter>
</activity>
<receiver android:name="com.twlkyao.myscheme.MainBroadcastReceiver">
<intent-filter>
<action android:name="Broadcast" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="SteveqiBroadcast" />
</intent-filter>
</receiver>
Teil I:
Wenn Sie auf die R.id.activity
Taste ist die SecondActivity
in App-Modul nach oben, um die App-Modul, zu diesem Zeitpunkt die R.id.broadcast
Schaltfläche klicken, kann die MainBroadcastReceiver
die Sendung empfangen, dann den Prozess der App-Modul töten, klicken Sie auf die R.id.broadcast
Schaltfläche , die MainBroadcastReceiver
kann die Übertragung erneut empfangen und das App-Modul erneut beenden und auf die Schaltfläche R.id.broadcast
klicken. Die MainBroadcastReceiver
kann die Übertragung nie empfangen.
Teil II:
Als ich die Leitung <data android:scheme="SteveqiBroadcast" />
des MainBroadcastReceiver
zu entfernen, und wiederholen Sie die Teil I Schritte kann die MainBroadcastReceiver
nie die Sendung empfangen.
Meine Fragen sind:
1.Is, dass die App-Modul am Leben sein muss, damit BroadcastReceiver
Sendung empfangen kann?
2.Warum kann die BroadcastReceiver
Broadcast empfangen, wenn <data android:scheme="SteveqiBroadcast" />
vorhanden sind, und Broadcast nicht empfangen kann, wenn die Leitung nicht beendet?
Ich habe versucht, fügen Sie die Berechtigung, kill app-Modul, verwenden Sie outerscheme Modul Broadcast senden, kann das App-Modul noch Modul nicht empfangen. – twlkyao