2012-01-02 15 views
2

オリエンテーションの変更と通知

ユーザーがホームキーを押すと、通知がステータスバーに表示され、通常はアプリケーションが非表示になります。ユーザーが通知をタップすると、通常、アプリケーションが復元されます。ここで

は、このために私のコードです:

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); 
} 

このすべてが、一つのことを除いてうまく機能している:アプリケーションが実行され、ユーザーが電話を回転させ、通知が作成されると

とすぐに破壊された。 onPause()の電話機の向きの変化を検出し、この通知を表示しない方法はありますか?

答えて

1

getResources().getConfiguration().orientationを使用して現在の方向を取得できます。 onCreateには方向値が格納され、後で比較することができます。電話機を回転させるとアクティビティが破壊され、その値も変わるので、値を静的変数に保存してください。あなたが姿勢変更後に通知を表示したい場合、ユーザは、活動が破壊され、再作成され、画面を回転させる

1

onDestroyメソッドで静的な旗を作り、

public void onDestroy() { 
Flag = 1; 
} 
のように通知を表示するのonCreateメソッドでそれをチェック

および

public static int Flag = 0; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if(Flag == 1) { 
    showNotification(); 
    } 
    else { 
    .......// 
    } 
} 
関連する問題