在Android中从通知中启动新活动

4

我想从状态栏通知中启动一个Activity A,如果Activity A已经在前台,则我想结束该Activity并重新启动Activity A。我该怎么做?

2个回答

1
你是说重新启动Activity A吗?最常见的方法是使用相同的类重新启动一个新的Intent,但我认为这样会占用太多内存。我更愿意创建一个名为"init"的方法,在onCreate方法中调用它,并在需要重新启动活动时再次调用。示例:
public void onCreate(Bundle si){
    // Call super and set your layout...
    init();
}

/**
 * This method should be called whenever you want to restart your activity. The
 * biggest advantage is you already have your layout (setContentView() method) 
 */
private void relaunchActivityA(){
    // Clean or save anything you need to clean or save
    init();
}

private void init(){
    // Init your variables, threads, and so on
}

如果你写成了“完成那个并开始Activity A”而不是“Activity B”,那么在你的startActivity() -在Activity A上- 调用‘finish’。例子:
// This is inside Activity A
Intent i = new Intent(this, ActivityB.class);
startActivity();
finish(); // This will be called right after 'Activity B' finishes

可以使用Activity B来完成,但我是从通知中启动Activity A的。 - Android

1

请查看有关创建状态栏通知的文档。这绝对涵盖了使用Intent和PendingIntent从通知中启动Activity。

http://developer.android.com/guide/topics/ui/notifiers/notifications.html

如果Activity已经在运行,结束它并重新启动...我不确定这是否可以轻松完成,这取决于您真正想要的内容。您可以尝试在清单文件中使用启动模式Activity参数来实现某些功能:

http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

然后让您的活动做出响应(最可能是使用onNewIntent()),并在程序上“重置”自己。可能会使用类似以下代码:

Android 重新启动我的活动


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接