我尝试了以下代码来检查Activity的回调函数,据我的理解,无论何时对话框出现在Activity的上方,都应该调用Activity的
OnPause()
方法。当对话框消失时,Activity的OnResume()
应该触发。
令人惊讶的是,它没有按照应该工作的方式进行。我已经在Android M 6.0.1上测试过了。
如果我有任何错误,请纠正我,这里是我的代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onPause() {
Log.d("MainActivity", "onPause");
super.onPause();
}
@Override
protected void onResume() {
Log.d("MainActivity", "onResume");
super.onResume();
}
@Override
protected void onStart() {
super.onStart();
}
@Override
protected void onStop() {
super.onStop();
}
public void onClick(View view) {
AlertDialog.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder = new AlertDialog.Builder(MainActivity.this, android.R.style.Theme_Material_Dialog_Alert);
} else {
builder = new AlertDialog.Builder(MainActivity.this);
}
builder.setTitle("Delete entry")
.setMessage("Are you sure you want to delete this entry?")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// continue with delete
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
}
}