如何手动触发我的Android onPause()方法进行测试?

时间:2017-01-09 17:46:31

标签: android android-activity onpause

我想手动测试我正在编写的Android应用在暂停时正常工作。 我可以通过Android GUI执行哪些操作,以便在不调用onPause()的情况下调用onStop()方法?

我尝试拉下通知栏并接听电话,但两者都没有导致onPause()被调用。

我想找到一个非编程解决方案,可以通过GUI使用Android的多个版本,有或没有手机,因为我正在教一个充满学生使用不同设备的课程。

请注意,我不会问如何告诉是否调用了我的onPause()方法。我问我能做什么导致它被调用,而不修改我的应用程序。

6 个答案:

答案 0 :(得分:2)

我找到了解决方案。我从书中Head-First Android Development的图片中得到了这个想法。

  1. 安装Any Do
  2. 创建任务。
  3. 将来会设置闹钟几分钟。
  4. 启动测试中的应用。
  5. 当警报出现时,我的应用程序会被部分遮挡,并调用其onPause()方法。如果我单击“关闭”图标,我的应用程序将恢复,而不会调用其onStop()方法。
  6. Picture showing app partly obscured by Any Do alert

答案 1 :(得分:0)

您可以通过编程方式调用它。

或者只是从意图开始一个不同的活动。

答案 2 :(得分:0)

这可以是在应用程序中执行此操作的一种方法。

  @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打开任何活动/应用程序。

答案 3 :(得分:0)

根据文档暂停状态发生,如果活动失去焦点但仍然可见(即,新的非全尺寸或透明活动集中在您的活动之上),则会暂停。暂停的活动完全处于活动状态(它维护所有状态和成员信息并保持附加到窗口管理器),但在极低内存情况下可能被系统杀死。

因此,如果你参加一个电话,你的电话屏幕显然会出现在电话会议中,它会调用先前正在运行的活动的onStop()。

因此,如果您只想调用onPause(),则应该打开一个新的非全尺寸或透明活动。

答案 4 :(得分:0)

您可以创建一个提醒对话框来调用onPause(),而无需调用onStop()

但需要注意的重要一点是将警报对话框创建为激活。

这可以按如下方式完成:

创建一个名为 dialog 的新活动类,扩展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);
            }
        });

答案 5 :(得分:0)

实际上29 API通知可能不起作用。
对于手动调用方法,onPause()/ onResume()应该按住主屏幕按钮