【发布时间】:2011-07-13 20:22:10
【问题描述】:
我是一名 Android 开发新手,在阅读了有关任务和活动的文档后,我无法让我的应用程序正常工作。
(首先,对不起我的英语)
我的应用程序包含两个活动:LOGIN 和 NEWS。两个activity的启动方式都是singleTask。
NEWS 活动使用 onCreate 创建一个通知,其标准通知代码为Android notification tutorial!。
int icon = R.drawable.notification_icon; // icon from resources
CharSequence tickerText = "Hello"; // ticker-text
long when = System.currentTimeMillis(); // notification time
Context context = getApplicationContext(); // application Context
CharSequence contentTitle = "My notification"; // expanded message title
CharSequence contentText = "Hello World!"; // expanded message text
Intent notificationIntent = new Intent(this, MyClass.class);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
Notification notification = new Notification(icon, tickerText, when);
notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
当我第一次打开应用程序时:
登录 --> onResume() --> 新闻 --> onCreate() --> 通知
有代码
Intent newLogAct = new Intent(Login.this, News.class);
TomTuckerActivity.this.startActivity(newLogAct);
如果我点击 Back *NEWS* 会再次被破坏:
登录 --> onResume() --> 新闻 --> onCreate() --> 通知
(我不喜欢那个循环,使用它的原因在最后解释)
如果我点击 Home,我会返回主菜单,然后从这里开始我不明白的内容:
如果我使用通知重新启动应用程序没有问题,并且 NEWS 窗口会再次打开而不调用 onCreate 并且不发送通知。
如果我在调用 NEWS 时使用应用程序图标,则 singleTask 选项似乎没用,因为再次调用 onCreate() 并再次发送通知。
我想要的是使用通知或图标恢复我离开的应用程序。
newLogAct 中的标志可以解决问题吗?
在这两个活动中都有 singleTask 启动选项可以吗?
关于返回按钮循环问题:
为了避免循环,我考虑使用 onCreate() 而不是 onResume()。但是,当我重新启动应用程序时,应用程序图标 LOGIN 已加载,但未调用 onCreate,因此未加载 NEWS。
还有其他方法可以解决吗?
也许使用 onNewIntent() 方法?
【问题讨论】:
-
首先,为什么launch方法是singleTask? doc 说它应该只在非常特殊的情况下使用。
-
因为如果不是,当我点击主页然后重新进入带有图标或通知的应用程序时,会创建一个新实例,然后我有:登录 - 新闻 - 登录 - 新闻 - ... 四个活动而不是只有两个。还有其他方法吗?
-
如果你重新进入带有图标的应用程序,我认为它不会创建一个新实例,它应该只是回到上一个活动。
标签: android android-activity launching