Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android:在库中注册接收器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@L_874_0@@L_675_1@库,其中包含@L_675_1@名为BaseActivity的活动和@L_675_1@名为BaseRegister的接收器.

BaseRegister扩展了BroadcastReceiver,它的动作是android.net.conn.CONNECTIVITY_CHANGE和android.net.wifi.WIFI_STATE_CHANGED,它看起来像:@H_801_7@

public class BaseRegister extends BroadcastReceiver {
    @Override
    public void onReceive(Context context,Intent intent) {
        if {
            Log.d("onReceive","Got it"); // Works
            context.sendBroadcast(new Intent("some"));
        else {
            Log.d("onReceive","Nope"); // Works
            context.sendBroadcast(new Intent("stuff"));
        }
    }
}

根据Log的说法,AndroidManifest也很好.以下是BaseActivity的样子:@H_801_7@

public class BaseActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceStatE) {
        super.onCreate(savedInstanceStatE);
        registerReceiver(applicationControl,new IntentFilter("some"));
        registerReceiver(applicationControl,new IntentFilter("stuff"));
    }

    private BroadcastReceiver applicationControl = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context,Intent intent) {
            if (intent.equals(new Intent("some"))) {
                some();
            } else if (intent.equals(new Intent("stuff"))) {
                stuff();
            }
        }
    };

    public void some() { /** logging etc **/ }
    public void stuff() { /** logging etc **/ }


}

项目中,我已经将这个项目添加为库,没问题.并创建了@L_675_1@扩展BaseActivity的Activity.当CONNECTIVITY_CHANGE作为动作时,由Android触发BaseRegister,但没有调用Activity.以下是我的项目的外观:@H_801_7@

public class AnyActivity extends BaseActivity {

    @Override
    protected void onCreate(Bundle savedInstanceStatE) {
        super.onCreate(savedInstanceStatE);
}

    @Override
    public void some() {
        super@L_888_8@me();
        Log.d("abc","abc"); // not working
    }


    @Override
    public void stuff() {
        super.stuff(); 
        Log.d("abc","abc"); //not working
    }

}

怎么了?我的方法是不正确的还是存在任何错误?任何帮助都会很棒.@H_801_7@

解决方法

BaseActivity将调用范围中“最接近”的方法,这是正常的核心Java行为,并非Android独有.如果你真的想要将BroadcastReceiver保留在基类中并发信号通知孩子,那么你将需要类似自定义监听器的东西,即子节点在运行时注册,当事件到达时,它们将被通知.

此外,当Activity不在堆栈顶部时,被认为是禁用广播接收器的好习惯,因此您可能希望在onResume()/ onPause()中使用registerReceiver()/ unregisterReceiver()@H_801_7@

祝好运.@H_801_7@

大佬总结

以上是大佬教程为你收集整理的Android:在库中注册接收器全部内容,希望文章能够帮你解决Android:在库中注册接收器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。