我正在制作一个应用程序,您可以在其中分享来自本地手机图库应用的图像。每当通过图库应用分享照片时,我的应用就会打开Activity
A
。
照片分享遵循从Activity A
到Activity B
的一些步骤,B
中的最后一步打开Main Activity
。
我想要的是,从B
回来应该打开A
。按下B
中的最后一个按钮可以从后台清除A
和B
,这样如果您按下Main Activity
,应该关闭该应用。
我做了什么:
最初,我使用此标记Main Activity
打开intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
但是,这开始了一个新的任务,所以即使我以前关闭我的应用程序并转到手机的图库应用程序,它会显示A
而不是该应用程序上的照片,当您按下时,那么你可以在那个画廊应用程序中看到实际的图像。
我为android:noHistory="true"
和A
指定了B
,并在没有新任务标志的情况下启动了Main Activity
的意图。这解决了新任务问题,因为当我关闭我的应用并切换回图库应用时,它显示的是实际图像而不是我的活动A
。但问题是,我无法从A
返回B
,如果应用最小化,那么活动就会消失。
答案 0 :(得分:1)
创建一个单例类:
Stack<Activity> stack;
public void add(Activity activity){
stack.add(activity).
}
public void remove(){
Activity activity = stack.lastElement();
if(activity != null) {
stack.remove(activity).
activity.finish();
}
}
public void removeAll() {
for (Activity activity : stack) {
if (activity != null)
activity.finish();
}
stack.clear();
}
在你的活动中调用add()&#39;的onCreate()
call remove将完成当前活动
call removeAll将完成添加到堆栈中的所有活动
答案 1 :(得分:0)
Intent l = new Intent(getApplicationContext(), MainActivity.class);
l.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
l.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
l.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
finish();
startActivity(l);
在活动B中的完成按钮上使用此功能。