管理活动 - Android

时间:2015-11-18 17:59:08

标签: android android-intent android-pendingintent

我在维护活动方面遇到了问题。

我有活动A,当从通知启动活动B时,我应该结束活动A,然后启动活动B.

换句话说,同时,在堆栈中,只应存在活动A或活动B.通过调用活动A中的finish(),从活动A开始活动B时非常容易实现。但是从通知开始活动时无法实现相同的效果。

Stack应该是这样的,

  • MainActivity - 活动A
  • MainActivity - 活动B(从通知开始活动B时)

但我的堆栈看起来像,

  • MainActivity - 活动A - 活动B

应该使用什么Intent标志或启动模式。

4 个答案:

答案 0 :(得分:1)

ClearTaskOnLaunch

  

如果在任务的根活动中将此属性设置为“true”,则只要用户离开任务并返回到该任务,就会将堆栈清除为根活动。

答案 1 :(得分:0)

使用您的通知将PendingIntent发送到活动A,在onNewIntent()中对其进行处理并启动活动B,按照您的说明完成活动A.

答案 2 :(得分:0)

为什么不在这两项活动的 finish() 中致电onStop()

通过这种方式,只要你离开这些活动某个地方,你就会一直有一个活动在它上面,它将被关闭,你将丢失这些数据,

作为您当前的要求,我认为只有一个Activity应该存在,这可能会解决您的问题

答案 3 :(得分:0)

您可以尝试设置

DataTable dt = new DataTable();

string query = "select * from books"
cmd.CommandText = query;
SqliteDataAdapter da = new SqliteDataAdapter();
da.SelectCommand = cmd;
da.Fill(dt);//exception throws on this line

在您宣布活动的清单中。

请参阅documentation of launch modes