Активность все еще работает - Android - PullRequest
0 голосов
/ 11 февраля 2011

Я создал BootReceiver, который создает новое действие и открывает диалоговое окно Alert. После нажатия OK / Отмена это действие все еще не закрыто полностью. Я вижу то же самое в кнопке Window List и вижу диалог Alert из списка Window.

Есть идеи, что может быть не так?

Мой код выглядит так, как показано ниже, вызывая финиш после OK / Отмена с помощью кнопки void onCreate (Bundle saveInstanceState) { super.onCreate (savedInstanceState); * +1005 *

    WindowManager.LayoutParams winParams;

    getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    // Windows Attributes   
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    winParams = getWindow().getAttributes();
    winParams.flags |= (WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
            | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

    getWindow().setAttributes(winParams);

     // Show Popup
    popup = new AlertDialog.Builder(this)
    .setCancelable(true)
    .setPositiveButton("agree", new OnClickListener() { 
        public void onClick(DialogInterface dialog, int arg1) {

                if( DEBUG ) Log.d(LOG_TAG, " AGREE CLICKED"  );

        finish();}})

    .setNegativeButton("disagree", new OnClickListener() { 
        public void onClick(DialogInterface dialog, int arg1) {

                if( DEBUG ) Log.d(LOG_TAG, " DISAGREE CLICKED"  );
    finish();}})

    .setOnCancelListener(
        new DialogInterface.OnCancelListener() {
            public void onCancel(DialogInterface dialog) {
                finish();
    }});

    popup.setIcon(android.R.drawable.ic_dialog_alert);
    popup.setTitle("title");
    popup.setMessage("Message");

    dialog = popup.create();

    winParams =  dialog.getWindow().getAttributes();
    winParams.flags |= (WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
            | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    dialog.getWindow().setAttributes(winParams);

    dialog.setOnDismissListener(AlwaysReqWhenPS);
    dialog.setOnKeyListener(this);             
    dialog.show();

}


protected void onStop() {
    if( DEBUG ) Log.d(LOG_TAG, " OnStop Called"  );
    super.onStop();
}

public void onDestroy() {
    if( DEBUG ) Log.d(LOG_TAG, " onDestroy Called"  );
    super.onDestroy();
}

public void onPause() {
    if( DEBUG ) Log.d(LOG_TAG, " onPause Called"  );
    super.onPause();
}

1 Ответ

2 голосов
/ 11 февраля 2011

Если под «списком окон» вы имеете в виду блеклый диалог, который появляется, когда вы долго нажимаете кнопку «Домой», то это совершенно нормально. В этом окне не обязательно отображаются текущие запущенные приложения, а, скорее, недавно использованные.

В своем диалоге вы можете просто вызвать finish(), как только вы это сделали, и вы хотите, чтобы он исчез. Это в основном все, что вы можете сделать ..

Android будет самостоятельно управлять «сборкой мусора». Важно то, что вы правильно распределяете и освобождаете ресурсы в течение жизненного цикла активности , например, регистрируете службы, потребляющие энергию аккумулятора, в событии onResume(...) и снова регистрируете их в событии onPause(...).

...