JiangSrl 2023-09-25 16:55 采纳率: 0%
浏览 9

广播的onreceive无法后台运行

为什么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();
    }
}
  • 写回答

1条回答 默认 最新

  • linconi 2023-09-26 09:56
    关注

    broadcast 的onReceive方法默认在主线程中执行,无法在后台运行,所以进入设置界面设置代理时,不会触发onreceive日志,只有返回活动会再次触发

    评论

报告相同问题?

问题事件

  • 创建了问题 9月25日

悬赏问题

  • ¥15 深度学习残差模块模型
  • ¥20 两个不同Subnet的点对点连接
  • ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
  • ¥15 差动电流二次谐波的含量Matlab计算
  • ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0
  • ¥15 C#如何调用串口数据
  • ¥15 MATLAB与单片机串口通信
  • ¥15 L76k模块的GPS的使用
  • ¥15 请帮我看一看数电项目如何设计
  • ¥23 (标签-bug|关键词-密码错误加密)