是否有任何特殊情况,在调用后不立即退出 Activity 比较方便finish()?
(换句话说,为什么这个方法没有从设计中立即退出Activity?)
http://developer.android.com/reference/android/app/Activity.html#finish()
更新
当我说立即时,我的意思是,您将及时调用finish(),当然,通过保存实例包进行清理、onStop 和 onDestroy 方法不算在内。
要查看我在说什么的示例,这是片段
onCreate(Bundle savedInstance){
// code executed
if(somecondition){
finish();
}
// code which shouldn't be executed
}
Run Code Online (Sandbox Code Playgroud)
问题是,为什么条件完成之后的代码以及结束活动之前的代码,以及为什么调用finish()没有立即停止处理
我有一对必须共同生活或死亡的活动.基本上AlphaActivity做了一些工作,然后startActivityForResult()为BetaActivity 调度intent().当BetaActivity完成后,我希望它startActivity()为GammaActivity 调度一个intent()然后调用finish()它自己.完成后,我希望调用AlphaActivity的onActivityResult()方法,但这似乎永远不会发生.我的设计就是在AlphaActivity里面onActivityResult(),我打电话finish().我的计划是,一旦达到GammaActivity,用户就无法返回AlphaActivity或BetaActivity.但目前后退按钮确实将用户带到了AlphaActivity.
我确实有一些想法,为什么它不起作用,但在这里讨论它们毫无意义,因为我对可能实际工作的内容感兴趣.
编辑:
代码都是非常标准的东西:
从Alpha内部
private void startBetaActivity() {
Intent intent = new Intent(this, BetaActivity.class);
startActivityForResult(intent, Constant.EXIT_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == Constant.EXIT_CODE) {
this.finish();
}
}
}
Run Code Online (Sandbox Code Playgroud)
从Beta内部:
if (success) {
startGammaActivity();
finish();
}
Run Code Online (Sandbox Code Playgroud) android back android-intent activity-finish android-activity
I tried the following code
Log.d("t20", "First here");
startActivity(new Intent(this, AnotherActivity.class));
finish();
Log.d("t20", "Then Here");
Run Code Online (Sandbox Code Playgroud)
log output:
First here
Then Here
Run Code Online (Sandbox Code Playgroud)
Why the second log message is printed?
The execution should be stopped at finsh(), right?
我想通过单击退出按钮退出整个应用程序.实际上我使用退出按钮而不是注销.因此,每当用户点击它时,它应该完成完整的应用程序,但它只会破坏上次运行的活动.我现在应该怎么做?我在我的代码中使用此方法,任何帮助将不胜感激,提前感谢.
public void exit(View v){
finish();
System.exit(0);
}
Run Code Online (Sandbox Code Playgroud)
我也使用了以下代码但它只杀死了最后运行的活动而不是完整的应用程序.
public void exit(View v){
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
Run Code Online (Sandbox Code Playgroud) 例如,我打开了活动 A、B、C、D。
我想完成 D 和 C 并返回 B。
我不想打开带有明确任务和新任务标志的活动 B。我也想保留活动 A,以便用户可以使用后退按钮从 B 返回到 A。
我怎样才能做到这一点?
我正在实现一个显示一些Twitter数据的应用程序,当在wifi上工作时没问题,但是在3g崩溃时,我得出的结论是因为获取填充表的数据的NSURLRequest需要更长的时间来加载所以表结束当键没有加载时调用键的对象,
所以问题是, - 我怎么知道NSURLRequest何时完成加载?[我检查了班级参考,但没看到它??]
非常感谢!
我有一个以alertdialog开头的活动
当我按下后退按钮时,对话框才会关闭.
我想关闭对话框和活动.
这该怎么做?
好的说你使用了一个应用程序,然后你打开了一个新的活动,然后打开了另一个活动,你可以通过使用finish();和后面的一个活动来结束你的活动,但你怎么能回到两个活动,一直回到第一个活动?我知道你可以使用:
Intent savedGameIntent = new Intent(v.getContext(), firstclass.class);
v.getContext().startActivity(savedGameIntent);
Run Code Online (Sandbox Code Playgroud)
但这是最好的方法吗?
我有3个活动A,B和C. A导致B导致C.我希望能够在A和B之间来回移动但是我想在C开始后完成A和B. 我知道如何通过意图启动C时关闭B但是如何在C启动时关闭A?
单击按钮时,我需要关闭活动。不幸的是,当单击按钮时,活动确实消失了,但仍在后台。用户仍然可以选择它并返回到前面。我需要的是完全消失/破坏的活动。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
Run Code Online (Sandbox Code Playgroud)
我在相关问题上搜索了 SO,但是,它们都没有帮助完全关闭活动。我已经尝试添加返回,添加另一个广播侦听器并传递命令以在 onCreate 之外调用完成。所以在这一点上,问题是 - 这真的可能还是 Android 是这样工作的,您可以调用 finish() 但它仍然在后台,用户可以重新启动它。
这是xml文件。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.app1.test.myapplication">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
编辑:添加 android:excludeFromRecents="true" 并不能解决问题。以下是重新创建此问题的步骤,如果有人认为它是重复的或已解决,请尝试发表评论/答案,我会接受。 …
android android-layout activity-lifecycle activity-finish android-activity
activity-finish ×10
android ×9
back ×2
exit ×1
ios ×1
java ×1
logout ×1
nsurlrequest ×1
uitableview ×1