0

我是 Android 开发的新手,在阅读了有关任务和活动的文档后,我无法让我的应用程序正常工作。

(首先,对不起我的英语)

我的应用程序包含两个活动:LOGINNEWS。两种活动的启动方法都是 singleTask。

NEWS 活动使用 onCreate 使用Android 通知教程的标准通知代码创建通知!

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

如果我回击* NEWS *并再次被破坏:

登录--> onResume() -->新闻--> onCreate() --> 通知

(我不喜欢那个循环,使用它的原因在最后解释)

如果我点击主页,我会返回主菜单,然后从这里开始我不明白的内容:

如果我使用通知重新启动应用程序,则没有问题,并且NEWS窗口再次打开而无需调用 onCreate 且未发送通知。

如果我在调用NEWS时使用应用程序图标,则 singleTask 选项似乎没用,因为再次调用 onCreate() 并再次发送通知。

我想要的是使用通知或图标恢复我离开的应用程序。

newLogAct 中的标志可以解决问题吗?

在这两个活动中都有 singleTask 启动选项可以吗?


关于后退按钮循环问题:

为了避免循环,我考虑使用 onCreate() 而不是 onResume()。但是,当我重新启动应用程序时,应用程序图标LOGIN已加载,但未调用 onCreate,因此未加载NEWS 。

有没有其他方法可以解决这个问题?

也许使用 onNewIntent() 方法?

4

1 回答 1

0

您的问题(或至少部分问题)似乎是:如何在您离开应用程序的地方返回通知。

不应该以这种方式使用通知,单击通知应该启动一个活动,其目的是处理通知。

如果您确实想回到您离开它的应用程序(我正在这样做),您可以使用以下技巧(我不知道这是否是一个好习惯,但它有效并且看起来并不那么骇人听闻) :创建一个Activity ,在其方法中调用Autodestructwhich ,并让通知运行这个Activity。这将在其顶部恢复具有虚拟 Activity 的后堆栈并立即删除虚拟 Activity。finish()onCreate()

于 2011-07-13T12:22:10.373 回答