我想实现以下场景:
当用户按下Home键时,状态栏中会显示Notification,通常会隐藏App。当用户点击通知应用程序时,通常会恢复。
这是我的代码:
private int NOTIFICATION = R.string.local_service_started;
private NotificationManager mNM;
private void showNotification() {
CharSequence text = getText(R.string.local_service_started);
Notification notification = new Notification(R.drawable.icon, text, System.currentTimeMillis());
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, JingleCartoucheActivity.class), 0);
notification.setLatestEventInfo(this, getText(R.string.local_service_label), text, contentIntent);
mNM.notify(NOTIFICATION, notification);
}
@Override
public void onPause() {
super.onPause();
if (!isFinishing()) {
showNotification();
}
}
@Override
public void onResume() {
super.onResume();
mNM.cancel(NOTIFICATION);
}
所有这一切都运作良好,除了一件事:
当App运行并且用户旋转手机时,会创建通知并立即销毁。有没有办法在onPause()中检测手机方向更改而不显示此通知?
答案 0 :(得分:1)
您可以使用getResources().getConfiguration().orientation
获取当前方向。在onCreate
存储方向值,然后您可以稍后进行比较。请务必将值存储到静态变量中,因为当您旋转手机时,活动会被破坏,因此它的值也会被破坏。
答案 1 :(得分:1)
当用户旋转屏幕时,活动被销毁并重新创建,如果要在方向更改后显示通知,请在onDestroy方法中创建一个静态标志,并在onCreate方法中检查它以显示通知,如
public void onDestroy() {
Flag = 1;
}
和
public static int Flag = 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(Flag == 1) {
showNotification();
}
else {
.......//
}
}