如何手动触发我的 Android onPause() 方法来测试它?
How can I manually trigger my Android onPause() method to test it?
我想手动测试我正在编写的 Android 应用程序在暂停时是否正常工作。 我可以通过 Android GUI 做什么来调用 onPause()
方法而不导致也调用 onStop()
?
我试过拉下通知栏并收到 phone 呼叫,但都没有导致 onPause()
被呼叫。
我想通过 GUI 找到适用于 Android 多个版本的非编程解决方案,有或没有 phones,因为我正在教一个 class到处都是使用不同设备的学生。
请注意,我不是在询问如何判断 如果 我的 onPause()
方法被调用。我在问我能做些什么来调用它,而不修改我的应用程序。
您可以通过编程方式调用它。
或者简单地以不同的意图开始 activity。
这可能是在应用程序中执行此操作的一种方法。
@Override
protected void onPause () {
super.onPause();
Toast.makeText(this, "Paused", Toast.LENGTH_SHORT).show();
finish();
}
@Override
protected void onStop () {
super.onStop();
Toast.makeText(this, "stopped", Toast.LENGTH_SHORT).show();
}
您的其他方法是使用 intent 打开任何 Activity/Application。
根据文档暂停状态发生,如果 activity 失去焦点但仍然可见(也就是说,一个新的非全尺寸或透明 activity 焦点在您的 activity),它已暂停。暂停的 activity 是完全活跃的(它维护所有状态和成员信息并保持附加到 window 管理器),但在内存极低的情况下可能会被系统杀死。
因此,如果您参加通话,显然您的通话屏幕将出现在堆栈中,并且它将调用之前 运行 activity.
的 onStop()
因此,如果您只想调用 onPause(),则应打开一个新的非全尺寸或透明 activity。
我找到了解决办法。我是从书中的一张图片得到的想法Head-First Android Development。
- 安装Any Do.
- 创建任务。
- 设置未来几分钟的闹钟。
- 启动正在测试的应用程序。
- 当警报出现时,我的应用程序被部分遮挡,并且它的
onPause()
方法被调用。如果我单击“关闭”图标,我的应用程序会在未调用其 onStop()
方法的情况下恢复。
您可以创建一个警报对话框来调用 onPause()
而无需调用 onStop()
。
但需要注意的重点是将警报对话框创建为活动。
这可以按如下方式完成:
创建一个名为 dialog 的新活动 class 扩展 AppCompatActivty
,并将其添加到 AndroidManifest.xml
,如下所示:
public class dialog extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//set appropriate layout
setContentView(R.layout.activity_main);
}
}
添加到AndroidManifest.xml
:
<application>
....
<activity
android:name="dialog"
android:theme="@style/Theme.AppCompat.Dialog"></activity>
</application>
将以下内容添加到 MainActivty.java 的 onCreate()
方法中:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), dialog.class);
startActivity(intent);
}
});
实际上在 29 API 通知可能不起作用。
对于手动调用方法 onPause()/onResume() 应该按住主页按钮
我想手动测试我正在编写的 Android 应用程序在暂停时是否正常工作。 我可以通过 Android GUI 做什么来调用 onPause()
方法而不导致也调用 onStop()
?
我试过拉下通知栏并收到 phone 呼叫,但都没有导致 onPause()
被呼叫。
我想通过 GUI 找到适用于 Android 多个版本的非编程解决方案,有或没有 phones,因为我正在教一个 class到处都是使用不同设备的学生。
请注意,我不是在询问如何判断 如果 我的 onPause()
方法被调用。我在问我能做些什么来调用它,而不修改我的应用程序。
您可以通过编程方式调用它。
或者简单地以不同的意图开始 activity。
这可能是在应用程序中执行此操作的一种方法。
@Override
protected void onPause () {
super.onPause();
Toast.makeText(this, "Paused", Toast.LENGTH_SHORT).show();
finish();
}
@Override
protected void onStop () {
super.onStop();
Toast.makeText(this, "stopped", Toast.LENGTH_SHORT).show();
}
您的其他方法是使用 intent 打开任何 Activity/Application。
根据文档暂停状态发生,如果 activity 失去焦点但仍然可见(也就是说,一个新的非全尺寸或透明 activity 焦点在您的 activity),它已暂停。暂停的 activity 是完全活跃的(它维护所有状态和成员信息并保持附加到 window 管理器),但在内存极低的情况下可能会被系统杀死。
因此,如果您参加通话,显然您的通话屏幕将出现在堆栈中,并且它将调用之前 运行 activity.
的 onStop()因此,如果您只想调用 onPause(),则应打开一个新的非全尺寸或透明 activity。
我找到了解决办法。我是从书中的一张图片得到的想法Head-First Android Development。
- 安装Any Do.
- 创建任务。
- 设置未来几分钟的闹钟。
- 启动正在测试的应用程序。
- 当警报出现时,我的应用程序被部分遮挡,并且它的
onPause()
方法被调用。如果我单击“关闭”图标,我的应用程序会在未调用其onStop()
方法的情况下恢复。
您可以创建一个警报对话框来调用 onPause()
而无需调用 onStop()
。
但需要注意的重点是将警报对话框创建为活动。
这可以按如下方式完成:
创建一个名为 dialog 的新活动 class 扩展 AppCompatActivty
,并将其添加到 AndroidManifest.xml
,如下所示:
public class dialog extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//set appropriate layout
setContentView(R.layout.activity_main);
}
}
添加到AndroidManifest.xml
:
<application>
....
<activity
android:name="dialog"
android:theme="@style/Theme.AppCompat.Dialog"></activity>
</application>
将以下内容添加到 MainActivty.java 的 onCreate()
方法中:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), dialog.class);
startActivity(intent);
}
});
实际上在 29 API 通知可能不起作用。
对于手动调用方法 onPause()/onResume() 应该按住主页按钮