我有一個有趣的問題。我在我的android應用程序中實現了一個服務實現,它與服務器同步,如果有新的訂單,它會顯示一個通知和一個帶有SHO/DISMISS按鈕的對話框。因爲無論當前正在運行的活動如何,我都需要顯示對話框,因此當出現新訂單時,我已將其作爲從服務開始的另一項活動實施。有更多的startActivity調用時,對話框的活動只啓動一次
的活動不設置任何看法,只是創建一個AlertDialog。 SHOW按鈕啓動OrdersListActivity,DISMISS按鈕只是關閉對話框。一切正常,但只在第一次。如果我解散對話框,並且另一個命令來了,它會再次顯示。但是,如果我點擊SHOW按鈕,它將顯示OrdersList,但是當另一個訂單稍後出現時,對話框將不會顯示。儘管根據logcat,活動已啓動。我已經搞了幾個小時了,你能幫我嗎?謝謝。
這裏是從我的服務類中的方法(進行通知,發送一個廣播並啓動對話活性):
公共無效notifyNewOrder(){
Context context = getApplicationContext();
Intent notificationIntent = new Intent(this, OrdersService.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, android.content.Intent.FLAG_ACTIVITY_NEW_TASK);
newOrderNotification.setLatestEventInfo(this, getString(R.string.notification_text), getString(R.string.notification_text), contentIntent);
notificationManager.notify(NOTIFICATION_ID, newOrderNotification);
Intent intent = new Intent(NEW_ORDER_RECEIVED);
sendBroadcast(intent);
Intent dialog = new Intent(context, NotificationDialog.class);
dialog.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialog);
}
這裏是的代碼NotificationDialog活動類:
公共類NotificationDialog延伸活動{
private static final int DIALOG_NEW_ORDER = 0;
private static final String LOG_TAG = "NotificationDialog";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(LOG_TAG, "onCreate - creating activity...");
}
@Override
public void onResume() {
super.onResume();
Log.d(LOG_TAG, "onResume - starting the dialog...");
showDialog(DIALOG_NEW_ORDER);
}
@Override
protected Dialog onCreateDialog(int id) {
Dialog dialog;
switch(id) {
case DIALOG_NEW_ORDER:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.notification_dialog_new_order)
.setCancelable(false)
.setPositiveButton(R.string.notification_dialog_show, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
/*
* Cancel the notification
*/
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(OrdersService.NOTIFICATION_ID);
/*
* Go to the list
*/
Intent listIntent = new Intent(getApplicationContext(), OrdersListActivity.class);
startActivity(listIntent);
dialog.dismiss();
finish();
}
})
.setNegativeButton(R.string.notification_dialog_dismiss, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
/*
* Cancel the notification
*/
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(OrdersService.NOTIFICATION_ID);
dialog.dismiss();
finish();
}
});
dialog = builder.create();
break;
default:
dialog = null;
}
return dialog;
}
}
我已經添加在NotificationDialog活動的onCreate和的onResume方法的一些日誌,發現了以下內容:
- 第一次NotificationDialog活動開始時,這些打印調試消息出來
- 第二時間,並且所有的其它時間,它們將顯示不出來,雖然logcat的說:10月10日至28日:00:38.074:INFO/ActivityManager(63):開始:意向{FLG = 0x10000000的CMP = PL。從PID 1001
更改標誌FLAG_ACTIVITY_CLEAR_TOP –
大,真正的工作。我想我必須仔細看看活動標誌。再次感謝。 –
如果有效。我將我的評論作爲答案提出,請接受它:) –