我有一个简单的广播接收器,可以监听连接的变化,如果网络可用,它会设置一个重复的警报,启动一个短暂的服务。如果没有网络连接,它将禁用重复发生的警报:
public class ConnectivityChange extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(getClass().getName(), "Connectivity changed! :/");
MyApplication app = (MyApplication ) context
.getApplicationContext();
if (app.isConnected()) {
// setup repeating alarms, since we are connected.
app.setCurrencyRatesServiceRepeatingAlarm(context);
Log.d(getClass().getName(), "Connected :D");
} else {
// cancel any repeating alarm, since we are NOT connected.
app.unsetCurrencyRatesServiceRepeatingAlarm(context);
Log.d(getClass().getName(), "Not connected :(");
}
}
}
清单看起来像:
<receiver android:name="ConnectivityChange">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
所有这些都很好。
但是,即使重新启动模拟器后,此代码似乎仍然运行。我不是要求BOOT_COMPLETE。我确保我没有从快照恢复模拟器。这是预期的行为吗?我不确定这是记录在哪里。当我遇到这个时,我正要求BOOT_COMPLETE。