0

アプリケーションがバックグラウンドに移動し、ヘッドフォンが電話アラームから削除されたときに Android アプリケーションがあります。フォアグラウンドではすべて問題ありませんが、アプリケーションがバックグラウンドに移動すると動作しません。

@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

アプリケーションがバックグラウンドで実行されているかどうかを確認できないため、アクティビティのonPauseメソッドにBroadcastReceiverを登録することは一般的に悪い習慣です。

代わりにサービスを使用する必要があります

于 2012-08-31T08:38:56.917 に答える