Android Application Development for Dummiesの例を試しています。これは、電話の呼び出しモードを切り替えるシンプルなアプリです。コードは以下です。
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);
}
}
私の質問は、オーバーライドするだけなのでonCreate()
(デフォルトで「通常」モードの画像を表示します)onResume()
、アプリの外部で電話モードをサイレントに変更すると、画像が「サイレント」に変更されることが予想されます(onResume()
現在の状態を確認して更新しますUI)、しかし、プロセスを強制終了してから電話モードをサイレントに変更しても、正しい画像が表示されるのはなぜですか?
アプリがリロードされ、デフォルトの画像が表示されると思いますが、これは正常です。正確ではありませんが、紛らわしい静かなイメージです。