0
在我的應用程序中,我有一個服務可以更新所有GUI元素。所以我需要將我的服務註冊到CONNECTIVITY_CHANGE_ACTION。這樣它就可以通知所有活動來更新GUI,只要它收到任何連接更新爲廣播。ANDROID:如何註冊服務中的連接更改?
爲了實現這個目標,我在我的服務中宣佈了一個公共成員類廣播接收器。以下是代碼片段。
public class BkgService extends Service{
public class ConnectionUpdater extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
NetworkInfo info = (NetworkInfo) ((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info == null || !info.isConnected()) {
}
else{
cd.setIsOnline(true,context);
}
Intent intent1 = new Intent();
intent1.setAction(ACTION_GUI_UPDATE);
sendBroadcast(intent1);
}
}
在我的清單文件我聲明如下
<service android:name=".BkgService" />
<receiver android:name="BkgService.ConnectionUpdater">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
我沒有得到任何錯誤這一點。但是當我啓用/禁用虛擬設備中的3G數據時,我沒有得到任何廣播更新。請提出可能出錯的地方?我以正確的方式做這件事嗎?
感謝您的建議。我做了必要的修改。我正在播放。但是我收到廣播後立即崩潰。這是我得到的錯誤:02-26 04:48:04.081:E/AndroidRuntime(1222):java.lang.RuntimeException:無法實例化接收器mt.android.app.BkgService $ ConnectionUpdater:java.lang.InstantiationException:mt .android.app.BkgService $ ConnectionUpdater – 2012-02-26 04:51:31
您的異常的原因可能是您的內部類不是靜態的,因此它在實例化時需要對外部類的引用。因此,Android Runtime無法在不傳遞對外部類的引用的情況下創建實例。嘗試將內部類聲明爲「static」。 – 2014-05-04 14:06:06