当前 Activity 在启动后续 Activity (Android) 时未暂停
Current Activity not Pausing when Starting Subsequent Activity (Android)
考虑代码:
public void callPerson(String phonenumber){
String tel = "tel:" + phonenumber;
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(tel));
startActivity(intent);
// onPause();
// Toast.makeText(getActivity(), "this is a test toast", Toast.LENGTH_LONG).show();
}
如您所料,当 运行 调用该代码时,当前的 activity 将自身暂停,因为随后的 activity(phone 拨号程序)运行秒。当 phone 调用结束时,原来的 activity 弹出。
当我想引入一个在通话后弹出的“评级”对话框时,我的问题就出现了。
我应该在哪里插入这样的代码?好吧,如果我们直接在“startActivity(intent);”行之后插入它这与取消最后一行(吐司)的注释相同(?)。如果这样做,您会看到代码在“startActivity(intent);”行之后继续 运行。 -- 吐司出现在 phone 调用期间。
那么我们如何防止代码继续运行?
您可以看到我也尝试插入“onPause()”,但这似乎也不起作用。
我理解 Android 生命周期,所以我能想到的唯一方法是将新的对话框代码放在 onResume() 中......但我还必须做类似的事情:
@Override
public void onResume(){
if (we are currently returning from phone call) {
//Dialog code here
}
}
不过看来一定有更好的办法。感谢您的帮助!
如您所知,调用 startActivity() 不会停止调用方法中的剩余代码。您提出的解决方案将适合您的问题。简单地有一个 class 变量,例如 returningFromCall
:
public void callPerson(String phonenumber){
String tel = "tel:" + phonenumber;
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(tel));
startActivity(intent);
returningFromCall = true;
}
然后在 onResume 方法中检查它是否为真,然后重置它:
@Override
public void onResume() {
if (returningFromCall) {
showDialog();
returningFromCall = false;
}
}
考虑代码:
public void callPerson(String phonenumber){
String tel = "tel:" + phonenumber;
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(tel));
startActivity(intent);
// onPause();
// Toast.makeText(getActivity(), "this is a test toast", Toast.LENGTH_LONG).show();
}
如您所料,当 运行 调用该代码时,当前的 activity 将自身暂停,因为随后的 activity(phone 拨号程序)运行秒。当 phone 调用结束时,原来的 activity 弹出。
当我想引入一个在通话后弹出的“评级”对话框时,我的问题就出现了。
我应该在哪里插入这样的代码?好吧,如果我们直接在“startActivity(intent);”行之后插入它这与取消最后一行(吐司)的注释相同(?)。如果这样做,您会看到代码在“startActivity(intent);”行之后继续 运行。 -- 吐司出现在 phone 调用期间。
那么我们如何防止代码继续运行?
您可以看到我也尝试插入“onPause()”,但这似乎也不起作用。
我理解 Android 生命周期,所以我能想到的唯一方法是将新的对话框代码放在 onResume() 中......但我还必须做类似的事情:
@Override
public void onResume(){
if (we are currently returning from phone call) {
//Dialog code here
}
}
不过看来一定有更好的办法。感谢您的帮助!
如您所知,调用 startActivity() 不会停止调用方法中的剩余代码。您提出的解决方案将适合您的问题。简单地有一个 class 变量,例如 returningFromCall
:
public void callPerson(String phonenumber){
String tel = "tel:" + phonenumber;
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(tel));
startActivity(intent);
returningFromCall = true;
}
然后在 onResume 方法中检查它是否为真,然后重置它:
@Override
public void onResume() {
if (returningFromCall) {
showDialog();
returningFromCall = false;
}
}