【发布时间】:2011-10-16 11:37:15
【问题描述】:
我有一个显示从服务器获取的一些数据的活动。如果没有可用的连接,activity 会显示一些缓存数据;如果连接可用,则活动获取数据并显示它。这一切都按预期工作。
现在,我想让我的活动在连接发生后立即重新加载数据。我正在使用一个扩展广播接收器的简单接收器:
public class ConnectionChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetInfo != null) {
//what to do here?
}
}
}
广播接收器在我的清单文件中声明如下:
<receiver android:name=".ConnectionChangeReceiver"
android:label="NetworkConnection">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
在我的活动中,我注册了接收者:
ConnectionChangeReceiver 接收者 = new ConnectionChangeReceiver(); this.registerReceiver(接收者, 新的 IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
现在,我很困惑下一步该做什么。执行 onReceive 方法时,如何让我的活动意识到这一点?我知道我可以开始一项新活动,但这并不是我真正想要的。我应该将 ConnectionChangeReceiver 声明为我的活动的私有类吗?还是有其他解决办法?
【问题讨论】:
-
在你想知道连接的活动内创建 ConnectionChangeReceiver 类,在 onRecieve 内,接收到连接信号后更新 UI 部分。