在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()方法?
您的问题(或至少是其中的一部分)似乎是:如何使通知回到您离开应用程序的位置。
通知不应该以这种方式使用,点击通知应该开始一个新的活动,其目的是处理通知。如果你确实想回到你离开它的应用程序(我正在做它),你可以使用下面的技巧(我不知道这是否是好的做法,但它的工作原理并不是看起来很冒险):创建一个名为Autodestruct
的活动,它在其onCreate()
方法中调用finish()
,并使通知运行此活动。这将在其顶部恢复带有虚拟活动的后退堆栈,并立即删除虚拟活动。
感谢您的回答。但是,从通知进行访问时,我没有任何问题,应用程序会从我离开的位置恢复。按照你的建议,我改变了singleTop的singleTask方法,它仍然有效。当我使用图标启动应用程序时,它会创建一个完整的新实例。但是如果我第一次使用通知来启动它,那么我按下主页按钮,然后使用应用程序在我离开它的位置恢复的图标。这有点奇怪。 – Octan
我没有建议,你甚至不需要改变启动方法,'标准'应该可以工作。 –
首先,为什么lauching方法是singleTask? [doc](http://developer.android.com/guide/topics/manifest/activity-element.html#lmode)表示它只能用于非常特殊的情况。 –
因为如果没有,当我打回家,然后重新进入应用程序的图标或通知一个新的实例创建,然后我有: 登录 - 新闻 - 登录 - 新闻 - ... 四个活动,而不是二。还有其他方法可以做到吗? – Octan
如果你用图标重新进入应用程序,我不认为它会创建一个新的实例,它应该回到最后一个活动。 –