Android 安卓,有些东西赢了';无法在onCreate()中工作,但它将在onResume()中工作
我有一个Android应用程序,它可以将铃声音量更改为最大,并在按下退出或主页按钮时恢复音量。下面是代码片段Android 安卓,有些东西赢了';无法在onCreate()中工作,但它将在onResume()中工作,android,Android,我有一个Android应用程序,它可以将铃声音量更改为最大,并在按下退出或主页按钮时恢复音量。下面是代码片段 int ringMode; int ringVolume; protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); changeRingtone(); }
int ringMode;
int ringVolume;
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
changeRingtone();
}
@Override
protected void onResume() {
changeRingtone();
}
private void changeRingtone() {
ringVolume = audioManager.getStreamVolume(audioManager.STREAM_RING);
ringMode = audioManager.getRingerMode();
audioManager.setStreamVolume(audioManager.STREAM_RING,
audioManager.getStreamMaxVolume(audioManager.STREAM_RING),
AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
}
@Override
protected void onPause() {
audioManager.setStreamVolume(audioManager.STREAM_RING, ringVolume, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
audioManager.setRingerMode(ringMode);
super.onPause();
}
现在的问题是,当应用程序第一次启动时(onCreate()
),它会将卷更改为max,但不会将其恢复到onPause()
中的上一个卷。但是,如果应用程序是通过onResume()
启动的(表示该应用程序处于后台),它会将卷更改为max,并将其恢复到onPause()
中的上一个卷
代码似乎很好,但我已经好几天没有找出问题出在哪里了,请帮助,谢谢 引用Android官方培训的文章:
默认情况下,系统使用Bundle实例状态进行保存
有关活动布局中每个视图对象的信息(例如
输入到EditText对象中的文本值)。那么,如果你的活动
实例被销毁并重新创建,布局的状态为
已恢复到以前的状态,无需任何代码。然而,
您的活动可能有更多您想要的状态信息
还原,例如跟踪用户在中的进度的成员变量
活动
如需进一步解释,请参阅StackOverFlow帖子。引用Android官方培训的文章:
默认情况下,系统使用Bundle实例状态进行保存
有关活动布局中每个视图对象的信息(例如
输入到EditText对象中的文本值)。那么,如果你的活动
实例被销毁并重新创建,布局的状态为
已恢复到以前的状态,无需任何代码。然而,
您的活动可能有更多您想要的状态信息
还原,例如跟踪用户在中的进度的成员变量
活动
如需进一步解释,请查看StackOverFlow post。根据Android
活动的生命周期
,您将两次调用changeRingtone()
方法,您应该仅在onResume
方法中调用此方法
根据安卓
活动的生命周期,您要调用changeRingtone()
方法两次,您应该只在onResume
方法中调用此方法
暂停时将在活动启动后和通话之间拨打电话。暂停时将在活动启动后和通话之间拨打电话。很高兴帮助您:很高兴帮助您:D