在Android中重新开始活动

问题描述:

我是Android开发人员,在阅读有关任务和活动的文档后,我无法正常工作。在Android中重新开始活动

(首先对不起我的英语)

我的应用程序包括两个活动:LOGIN新闻。这两种活动的启动方法都是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); 

当我第一打开应用程序:

LOGIN - >的onResume() - >NEWS - >的onCreate() - >通知

随着代码

Intent newLogAct = new Intent(Login.this, News.class); 
TomTuckerActivity.this.startActivity(newLogAct); 

如果我打返回 * 新闻 *被破坏,并再次:

LOGIN - >的onResume() - >新闻 - >的onCreate() - >通知

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

如果我打首页我回到主菜单,在这里开始我不明白:

如果我使用该通知以重新启动应用程序阳离子没有问题,新闻窗口再次打开,而无需调用创建和没有发送通知。

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

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

可能在newLogAct中的一个标志将解决问题?

好的在这两项活动中都有singleTask启动选项吗?


关于返回纽襻问题:

为了避免我想过使用的onCreate(循环),而不是的onResume()。但是,当我使用应用程序图标重新启动应用程序时登录已加载,但onCreate未调用,因此新闻尚未加载。

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

也许用onNewIntent()方法?

+0

首先,为什么lauching方法是singleTask? [doc](http://developer.android.com/guide/topics/manifest/activity-element.html#lmode)表示它只能用于非常特殊的情况。 –

+0

因为如果没有,当我打回家,然后重新进入应用程序的图标或通知一个新的实例创建,然后我有: 登录 - 新闻 - 登录 - 新闻 - ... 四个活动,而不是二。还有其他方法可以做到吗? – Octan

+0

如果你用图标重新进入应用程序,我不认为它会创建一个新的实例,它应该回到最后一个活动。 –

您的问题(或至少是其中的一部分)似乎是:如何使通知回到您离开应用程序的位置。

通知不应该以这种方式使用,点击通知应该开始一个新的活动,其目的是处理通知。如果你确实想回到你离开它的应用程序(我正在做它),你可以使用下面的技巧(我不知道这是否是好的做法,但它的工作原理并不是看起来很冒险):创建一个名为Autodestruct的活动,它在其onCreate()方法中调用finish(),并使通知运行此活动。这将在其顶部恢复带有虚拟活动的后退堆栈,并立即删除虚拟活动。

+0

感谢您的回答。但是,从通知进行访问时,我没有任何问题,应用程序会从我离开的位置恢复。按照你的建议,我改变了singleTop的singleTask方法,它仍然有效。当我使用图标启动应用程序时,它会创建一个完整的新实例。但是如果我第一次使用通知来启动它,那么我按下主页按钮,然后使用应用程序在我离开它的位置恢复的图标。这有点奇怪。 – Octan

+0

我没有建议,你甚至不需要改变启动方法,'标准'应该可以工作。 –