我一直试图表现出"你想退出吗?" 用户尝试退出活动时的对话框类型.
但是我找不到合适的API挂钩. Activity.onUserLeaveHint()最初看起来很有希望,但我找不到阻止活动完成的方法.
我在计时器上有一个闪屏.我的问题是,在finish()我的活动之前,我需要检查下一个活动是否已经开始,因为系统对话框弹出,我只想finish(); 一旦用户从对话框中选择了一个选项?
我知道有很多关于如何查看您的活动是否在前台的问题,但我不知道这是否允许在活动之上设置对话框.
这是问题,红色是我的活动,它在后台,而对话在前台:

编辑:我已经尝试过不使用finish()但是我的活动可以回到我试图避免的应用程序堆栈中.
在我的应用程序中,我有一个注销功能.如果用户单击注销,则会转到主屏幕.现在我按退回按钮退出我的应用程序.但我想要的是我需要像后退按钮功能一样自动退出(即以编程方式).我知道通过调用finish()将完成功能.但问题在于之前的活动.
我尝试使用Imagebutton关闭当前片段.
我在Fragment-A中,当我点击按钮时它将转向Fragment-B.
当我点击Fragment-B上的按钮时,它将转向Fragment-C并关闭Fragment-B.
如果我单击Fragment-C上的后退按钮,它将返回Fragment-A.
我尝试过的代码如下所示
camera_album = (ImageButton) view.findViewById(R.id.camera_album);
camera_album.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
closefragment();
Fragment fragment = FileBrowserFragment.newInstance(null, null, null) ;
MainActivity.addFragment(LocalFileBrowserFragment.this, fragment) ;
}
});
private void closefragment() {
getActivity().getFragmentManager().beginTransaction().remove(this).commit();
}
Run Code Online (Sandbox Code Playgroud)
当我点击片段B的后退按钮时,它会转到Fragment-C.
但是当我单击Fragment-C上的后退按钮时,它不会返回到Fragment-A.它回到了空背景.如果我想回到Fragment-A,我必须再次单击后退按钮.
所以,似乎并没有完成当前片段的关闭.
如何像Android的后退按钮一样完成当前片段?
我有一个Android应用程序.我正在制作带有进度条的加载屏幕.
我在onCreate方法中输入了一个延迟.当计时器结束时,我想完成当前活动并开始一个新活动.
它只是在调用finish()方法时给我一个例外.
public class LoadingScreen extends Activity{
private LoadingScreen loadingScreen;
Intent i = new Intent(this, HomeScreen.class);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.loading);
CountDownTimer timer = new CountDownTimer(10000, 1000) //10 second Timer
{
public void onTick(long l)
{
}
@Override
public void onFinish()
{
loadingScreen.finishActivity(0);
startActivity(i);
};
}.start();
}
}
Run Code Online (Sandbox Code Playgroud)
如何在进度条完成后更改代码以使其结束?
我有一个具有多个页面的应用程序,即多个活动,其中一些仍处于打开状态.
有没有办法一次关闭所有活动?
我知道这个问题很常见,并且在Stack Overflow上多次询问,但在访问了近四页的搜索引擎结果和几乎关于这个问题的Stack Overflow的20个问题后,我发现它们都没有得到正确的解决或回答.
我想要的是:
我想在最近的应用程序列表中显示我的应用程序,但是当我关闭应用程序时,我的进程应该被终止,应用程序应该从最近的应用程序列表中删除.
我找到了一些答案:
use System.exit(0); //doesn't clear app from recents
OR
use android.os.Process.killProcess(android.os.Process.myPid()); //doesn't clear app from recents
OR
use finish() or this.finish() or Activity.finish();// doesn't clear app from recents
Run Code Online (Sandbox Code Playgroud)
我在每个答案中看到的一个常见建议是在清单中添加以下代码:
android:excludeFromRecents //I think this is wrong approach.
Run Code Online (Sandbox Code Playgroud)
因为当用户在我的应用程序运行时按下主页按钮添加此项后,用户无法在最近的应用程序列表中看到我的应用程序.
关于此的许多其他建议,但他们都没有做任何关闭应用程序和从最近的应用程序列表中清除应用程序.此外,如果你进去Settings>Apps>yourApp>your Application看到仍然它要求"强制停止"意味着应用程序正在运行!
我在谈论android中的编程.
在早期我想,finish() 关闭当前活动并返回活动堆栈中的上一个,并System.exit(0) 关闭整个应用程序.
但是我错了.我做了一个小实验并且明白两者都只完成当前的活动.
我能注意到的唯一区别是,在Android 2.3.3中
onActivityResult()用finish().而 onActivityResult()不是要求System.exit(0).但是在Android 4.2.2中,两者都调用了onActivityResult()!对于exit(),Intent为null.(我只测试了这2个设备)
finish()是更快的.(好像更多后台操作是否有退出())所以,
两者有什么区别?
在哪种情况下,我可以使用exit()?
我相信在这两种方法之间我还缺少一些东西.希望有人可以解释更多并纠正我.
谢谢
编辑请求:
制作包含2项活动的Android应用程序.使用Intent从Launcher活动中调用第二个Activity.现在,在第二个活动中,点击一下按钮,就可以了System.exit(0);." VM停止进一步执行,程序将退出. "????(根据文档)
我看到那里的第一个活动.为什么?(欢迎你证明我错了/我是对的)
我正在努力使应用程序更具实质性,而我只是坚持如何实现一些共享元素转换.我有一个活动A,它启动另一个B然后调用finish()以便从后栈中删除它.在我的情况下,我有一个我想在两个活动之间分享的元素,但是一旦它从A传递到B,A就不再重要了.如果我在startActivity(ctx,intent,bundle)之后没有调用finish(),则退出/输入动画效果很好.但是,如果我打电话给完成,那么在动画开始之前会有一个非常丑陋的闪烁.
我有什么东西可以忽略,或者是不可能做我想做的事情?
java android activity-finish android-5.0-lollipop shared-element-transition
Ok i have tons of $http() calls all around the app code,
i'm wondering is there any way / best practice to detect when all $http() around the app have finished ( success/error donesn't matter what they return, just need to know if finished )?
So that i can show a loading gif until they are loading ?
thanks
activity-finish ×10
android ×9
angularjs ×1
detect ×1
dialog ×1
http ×1
java ×1
javascript ×1
systemexit ×1