【发布时间】:2012-01-20 18:29:21
【问题描述】:
我遇到了一个奇怪的问题。我有一段非常简单的代码,旨在每当有人连接到 wifi 接入点时触发。
IntentFilter ConnectedFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
getApplicationContext().registerReceiver(ConnectedToAPReceiver, ConnectedFilter);
private BroadcastReceiver ConnectedToAPReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent)
{
final String action = intent.getAction();
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION))
{
ConnectivityManager connManager = (ConnectivityManager)getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo Wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (Wifi.isConnected())
{
// If we get here, it means that the user has just connected to wifi.
}
}
}
};
这段代码非常适合我需要它做的事情。但是我遇到了奇怪的情况,当按下返回或主页按钮时,广播接收器也会被触发。此外,加载应用程序也会触发此操作。
有谁知道为什么按下这些按钮会被 Android 视为导致连接更改?有没有人知道如何轻松区分这些按钮按下和有效的连接更改。
由于一些工作,这是解决方案的一部分。
首先我有两个类,一个活动类和一个服务类。在我的活动类中,每当调用 onPause 和 onDestroy 时,我都会使用广播接收器在服务类中设置一个变量。 (当用户按下这些按钮时,这些会被触发)。服务类中的接收者获取此意图并设置公共变量。
然后在活动类 onResume 中检查此变量,并向服务发送另一个意图以将变量重置为默认状态。在这里,我还设置了一个本地标志。当我进行任何处理时,我只需事先检查该标志并适当地处理它。
【问题讨论】:
标签: java android back-button connectivity android-homebutton