我在清单文件中注册了我的广播接收器(如下所示)。工作正常。
<receiver android:name="MyIntentReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
但是它一直在注册。即每当手机启动时,我的应用程序就会启动。但我只想要一次。
我明白如果它是动态注册的,我们可以做到这一点。即我们可以在onPause()或onDestroy()方法中取消注册它。 如果有可能,请给我代码来做到这一点。我是新手。任何帮助,将不胜感激。谢谢。
我尝试了以下代码,但没有用:
public class BeforeReboot extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.beforereboot);
}
private BroadcastReceiver myBroadcastReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent) {
Intent startupBootIntent = new Intent(context,
AfterRebootDynamic.class);//new class to be launched
startupBootIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startupBootIntent);
}
};
public void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.BOOT_COMPLETED");
filter.addCategory("android.intent.category.HOME");
registerReceiver(myBroadcastReceiver, filter);
}
public void onPause() {
super.onPause();
unregisterReceiver(myBroadcastReceiver);
}
}
答案 0 :(得分:0)
步骤
使用registerReceiver()通过以下方式注册BroadcastReceiver:
LocalBroadcastManager:用于接收本地意图,即在同一应用程序中。
上下文:也用于接收远程意图。
调用unRegisterReceiver()取消注册BroadcastReceiver
请参阅本教程以获取更多详细信息。源代码:Create Simple Dynamic Recievers