我想手动测试我正在编写的Android应用在暂停时正常工作。 我可以通过Android GUI执行哪些操作,以便在不调用onPause()
的情况下调用onStop()
方法?
我尝试拉下通知栏并接听电话,但两者都没有导致onPause()
被调用。
我想找到一个非编程解决方案,可以通过GUI使用Android的多个版本,有或没有手机,因为我正在教一个充满学生使用不同设备的课程。
请注意,我不会问如何告诉是否调用了我的onPause()
方法。我问我能做什么导致它被调用,而不修改我的应用程序。
答案 0 :(得分:2)
我找到了解决方案。我从书中Head-First Android Development的图片中得到了这个想法。
onPause()
方法。如果我单击“关闭”图标,我的应用程序将恢复,而不会调用其onStop()
方法。答案 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()应该按住主屏幕按钮