在我的一个应用程序中,我使用了应用程序 (MyApplication) 的子类和添加到清单中的广播接收器 (MyBroadcastReceiver)。BroadcastReceiver 注册动作android.intent.action.PACKAGE_ADDED和android.intent.action.PACKAGE_REPLACED。
在设备上添加或替换 APK 时会触发这些意图。应用程序本身在安装过程中没有显示,所以我的问题是:应用程序子类会与应用程序进程一起启动吗?
这是代码:
显现:
<application
...
android:name=".MyApplication" >
...
<receiver
android:name=".MyBroadcastReceiver" >
<intent-filter>
<action
android:name="android.intent.action.PACKAGE_ADDED" />
<action
android:name="android.intent.action.PACKAGE_REPLACED" />
<data
android:path="xxx.yyy.zzz"
android:scheme="package" />
</intent-filter>
</receiver>
</application>
我的应用程序:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Log.d(this.getClass().getName(), "onCreate");
// ...
}
@Override
public void onTerminate() {
// ...
super.onTerminate();
}
}
我的广播接收器:
public class MyBroadcastReceiver extends BroadcastReceiver {
public static final String TAG = "xxx.yyy.zzz.MyBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null && intent.getDataString() != null) {
if (intent.getDataString().contains("xxx.yyy.zzz")) {
if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) {
Log.d(this.getClass().getName(), "onReceive(Package added)");
// ...
} else if (intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) {
Log.d(this.getClass().getName(), "onReceive(Package replaced)");
// ...
}
}
}
}
}