我有一個活動,顯示從服務器獲取的一些數據。如果沒有可用的連接,則活動顯示一些緩存的數據;如果連接可用,則活動獲取數據並顯示它。這一切都按預期工作。
現在,我想讓我的活動在連接發生後立即重新加載數據。我使用一個擴展的BroadcastReceiver一個簡單的接收器:android在活動和廣播接收器之間進行通信
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 receiver = new ConnectionChangeReceiver(); this.registerReceiver(receiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
現在,我很困惑接下來該做什麼。當執行onReceive方法時,如何讓我的活動意識到這一點?我知道我可以開始一項新的活動,但那不是我想要的。我應該將ConnectionChangeReceiver聲明爲我的活動的私人類嗎?或者還有其他解決方案嗎?
在您想要了解連接的活動內部創建ConnectionChangeReceiver類,在onRecieve內部,在收到連接信號後更新UI部件。 – sat