0

我有一个Android应用程序,当应用程序进入后台并且耳机从电话警报开始时移除。前台一切都很好,但是当应用程序进入后台时它不起作用。我在活动onPause()上编写代码如下

@Override
    protected void onPause() {
        try{
        super.onPause();
        registerReceiver(new BroadcastReceiver() {

            @Override
            public void onReceive(Context context, Intent intent) {

                if (intent.hasExtra("state")) {
                    int state = intent.getIntExtra("state", 0);
                    if (isHeadPhoneAttached && state == 0) {
                        isHeadPhoneAttached = false;
                        if (isTriggered) {
                                 createNotification();
                                 initTimerCounter();
                                 makeToat();
                                 /*handler.removeCallbacks(sendUpdatesToUI);*/
                                /*callTriggerActivity();*/
                                /*showDialog(Headphone_DIALOG);*/
                                    }
                    } else if (!isHeadPhoneAttached && state == 1) {
                        isHeadPhoneAttached = true;
                    }
                }
            }
        }, new IntentFilter(Intent.ACTION_HEADSET_PLUG));
        /*createNotification();
        initTimerCounter() ;*/

        }
        catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }

但它不起作用。请任何人给我一些想法。

4

1 回答 1

0

您无法确定您的应用程序是否在后台运行,因此在 Activity 的 onPause 方法中注册 BroadcastReceiver 通常是不好的做法。

您应该改用服务

于 2012-08-31T08:38:56.917 回答