方向变更和通知

时间:2012-01-02 13:06:49

标签: java android

我想实现以下场景:

当用户按下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()中检测手机方向更改而不显示此通知?

2 个答案:

答案 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 {
    .......//
    }
}