Mag*_*gie 5 android broadcastreceiver
我有一个活动,显示从服务器获取的一些数据.如果没有可用的连接,活动将显示一些缓存数据; 如果连接可用,则活动将获取数据并显示它.这一切都按预期工作.
现在,我想让我的活动在连接发生后立即重新加载数据.我正在使用一个扩展BroadcastReceiver的简单Receiver:
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?
}
}
}
Run Code Online (Sandbox Code Playgroud)
广播接收器在我的清单文件中声明如下:
<receiver android:name=".ConnectionChangeReceiver"
android:label="NetworkConnection">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
在我的活动中,我注册了接收器:
ConnectionChangeReceiver receiver = new ConnectionChangeReceiver(); this.registerReceiver(接收者,新的IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
现在,我很困惑,接下来要做什么.当执行onReceive方法时,如何让我的活动意识到这一点?我知道我可以开始一项新活动,但这不是我想要的.我应该将ConnectionChangeReceiver声明为我的活动的私有类吗?或者还有其他解决方案吗?
小智 11
我认为将接收器构建为活动的私有子类是进入这里的方法.这样,您就可以控制活动中的事件和数据.然后你可以创建它的一个实例并像上面那样从代码注册接收器.
请注意,您不必在清单和代码中注册接收器.其中一个是enugh - 清单基本上是一个"静态"注册,而在代码中执行它允许在运行时动态注册.此外,当您在清单中注册时,将自动从系统创建接收器的新实例,执行并终止.在代码中执行reg可以指向一个特定的实例.
| 归档时间: |
|
| 查看次数: |
6702 次 |
| 最近记录: |