为什么broadcast的onreceive不会在后台触发?
我想监视网络代理中的变化并在发生变化时检测网络。 我在接收时输入登录信息。 当我在活动时,它可以正常登录。 但是,当我进入设置界面设置代理时,不会触发onreceive日志。 返回活动后将立即触发。 为什么是这样?
先谢谢所有回答这个问题的人了
public class NetworkReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("NetworkChange", "onReceiveTest 代理接收器接收到了: "+ intent.getAction());
InternetConnectionStatusHelper internetConnectionStatusHelper = InternetConnectionStatusHelper.getInstance(context);
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
ProxyInfo proxyInfo = connectivityManager.getDefaultProxy();
if (proxyInfo != null) {
String host = proxyInfo.getHost();
int port = proxyInfo.getPort();
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port));
internetConnectionStatusHelper.setmProxy(proxyInfo);
internetConnectionStatusHelper.checkConnection();
Log.d("NetworkChange", "onReceive has: 代理");
}else {
internetConnectionStatusHelper.checkConnection();
Log.d("NetworkChange", "onReceive: 无代理");
}
}
}
public class NetworkService extends Service {
private final String TAG = "NetworkChange";
BroadcastReceiver networkReceiver;
@Override
public void onCreate() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.PROXY_CHANGE");
networkReceiver = new NetworkReceiver();
registerReceiver(networkReceiver,intentFilter);
Log.d(TAG, "服务创建了");
super.onCreate();
}
}