use*_*343 3 android android-lifecycle
我正在尝试Android应用程序开发傻瓜的一个例子,这是一个简单的应用程序,切换手机的铃声模式.代码如下.
public class SilentModeToggleActivity extends Activity {
private AudioManager mAudioManager;
private boolean mPhoneIsSilent;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
checkIfPhoneIsSilent();
setButtonClickListener();
}
@Override public void onResume() {
super.onResume();
checkIfPhoneIsSilent();
toggleUi();
}
private void checkIfPhoneIsSilent() {
int ringerMode = mAudioManager.getRingerMode();
if (ringerMode == AudioManager.RINGER_MODE_SILENT) {
mPhoneIsSilent = true;
} else {
mPhoneIsSilent = false;
}
}
private void setButtonClickListener() {
Button toggleButton = (Button) findViewById(R.id.toggleButton);
toggleButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (mPhoneIsSilent) {
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
mPhoneIsSilent = false;
} else {
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
mPhoneIsSilent = true;
}
toggleUi();
}
});
}
private void toggleUi() {
ImageView imageView = (ImageView) findViewById(R.id.phone_icon);
Drawable newPhoneImage;
if (mPhoneIsSilent) {
newPhoneImage = getResources().getDrawable(R.drawable.phone_silent);
} else {
newPhoneImage = getResources().getDrawable(R.drawable.phone_on);
}
imageView.setImageDrawable(newPhoneImage);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,因为我只有重写onCreate()(表示在默认情况下,"正常"模式图像)和onResume(),它的预期,以"沉默"如果我更改手机模式为静音的应用程序之外的图像的变化(在onResume()我检查当前的状态和更新UI),但为什么它仍然显示正确的图像,即使我杀了进程然后将手机模式更改为静音?
我希望应用程序重新加载并显示默认图像,这是正常的.不是正确但令人困惑的无声图像.
onResume()在任何时候活动重新获得前景输入时调用.这包括:
当其他东西有前景后返回到屏幕(例如,设置),和
在此过程中首次创建它时(包括因为您从DDMS中删除旧过程而需要的任何新过程)
因此,在任何一种情况下,您的代码都将检查振铃模式的状态,并且在任何一种情况下都将使用正确的图像.
| 归档时间: |
|
| 查看次数: |
4893 次 |
| 最近记录: |