2011-02-11 2 views
0

Я создал BootReceiver, который создает новое действие и всплывает диалоговое окно Alert. После нажатия OK/Отмена эта активность все еще не полностью закрыта. Я могу видеть то же самое в кнопке «Список окон» & Я вижу диалоговое окно «Предупреждение» из списка «Окно».Активность Still Runs - Android

Любые идеи, что может быть неправильным?

Мой код выглядит как ниже, вызывая завершение после ОК/Отменить buttoon protected void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState);

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(); 
} 
+0

Что вы подразумеваете под кнопкой «Список окон».? Как кнопки ok/cancel в диалоговом окне оповещения управляют действием? – Gopinath

+1

Вы не должны запускать действия при загрузке. Это расстраивает и значительно замедляет процесс загрузки. – Falmarri

+0

@Gopinath: список окон означает, что мы можем видеть список ранее открытых действий, которые могут быть рядом с кнопкой HOME. добавлен фрагмент кода. – jhlee

ответ

2

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

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

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

+0

@Jury: Вызов finish() после OK/CANCEL, добавлен фрагмент кода – jhlee

Смежные вопросы