2016-07-24 3 views
0

Meine Idee war, wenn ich die App zerstöre, möchte ich ihnen den Alert-Dialog anzeigen, nachdem ich meine App gelöscht habe. Ich übe nur, ich glaube, es vielleicht getan werden kann, meine Art und Weise ist schlecht, aber ich tat dies und es ist nicht working.code unter:Kann ich AlertDialog in der Funktion onDestroy() verwenden?

public class MainActivity erweitert AppCompatActivity

View.OnClickListener { 
    Button btnStart, btnStop; 
    Intent intent; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     btnStart = (Button) findViewById(R.id.btnstart); 
     btnStart.setOnClickListener(this); 
     btnStop = (Button) findViewById(R.id.btnstop); 
     btnStop.setOnClickListener(this); 

     intent = new Intent(MainActivity.this, MyService.class); 
    } 

    @Override 
    public void onClick(View view) { 
     switch (view.getId()) { 
      case R.id.btnstart: 
       startService(intent); 
       Toast.makeText(MainActivity.this, "Service Started", Toast.LENGTH_SHORT).show(); 
       break; 

      case R.id.btnstop: 
       stopService(intent); 
       Toast.makeText(MainActivity.this, "Service Stopped", Toast.LENGTH_SHORT).show(); 
       break; 
     } 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setPositiveButton("yes", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
       finish(); 
      } 
     }).setNegativeButton("No", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
       stopService(intent); 
      } 
     }).setMessage("Do you want to play Music in Background?").setTitle("Wait please...").create().setCancelable(false); 
     builder.show(); 
    } 
} 
+1

es weired, genannt OnDestroy wird, wenn sich Aktivität zerstört wird, wenn Sie Benutzer möchten, dass Ihre App verdoppeln überprüfen schließen, können Sie Ihr Dialog vor 'finish()' ' – kaitian521

+0

Ihre onBackPressed' Funktion überschrieben Versuchen zeigen. –

Antwort

3

implementiert Sie sollten nicht versuchen Sie, alles in onDestroy() anzuzeigen. Wenn Sie den Benutzer vor dem Schließen der App warnen möchten, können Sie die Schaltfläche "Zurück" überschreiben.

@Override 
public void onBackPressed() { 
    ... 
} 
+0

Ich kann stopService (intent) in destory aufrufen, aber warum nicht AlertDialog? –

+1

onDestroy ist kein guter Ort für irgendetwas, das für Ihre App-Logik kritisch ist, da es nicht garantiert ist, dass es aufgerufen wird. Sie können beispielsweise Dienste von onPause stoppen. – auval

Verwandte Themen