2011-02-11 11 views
0

私は新しいアクティビティを作成し、警告ダイアログをポップアップするBootReceiverを作成しました。 OK/Cancelを押すと、そのアクティビティはまだ完全に閉じていません。私はウィンドウリストボタンで同じことを見ることができます&ウィンドウリストから警告ダイアログを見ることができます。アクティビティがまだ実行中 - Android

何が間違っている可能性がありますか?

私のコードは次のようになります。OK /キャンセル後にfinishを呼び出します。buttoon protected void onCreate(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は、アクティビティの「ガベージコレクション」を単独で管理します。重要なことは、イベントでバッテリー消費サービスを登録し、onPause(...)イベントで再び登録解除するなど、リソースを正しく割り当て、割り当てを解除することです。

+0

@ Judy:OK/CANCELの後にfinish()をコールし、コードスニペットを追加しました。 – jhlee