目前我正在进行Android开发,现在我遇到了退出已启动的整个应用程序的问题。
我试过 .finish(),但它没有显示我想要的内容。
我有2个活动,A和B.当按钮点击时,活动A将转到活动B.在活动B中,当我单击按钮“退出”(我创建)与监听器触发 .finish()时,它只返回活动A但不关闭整个应用程序(我想要的是直接回到主屏幕并杀死后台进程)。
如何在应用程序中的任何位置退出整个应用程序?谢谢。
img = doc.createInstance('com.sun.star.text.TextGraphicObject')
element_url = 'file://' + file_name
img.GraphicURL = element_url
img.Surround = THROUGHT
text.insertTextContent(cursor, img, False)
答案 0 :(得分:0)
你在活动A之后写 startActivity(新意图(A.this,B.class)) 完成()强> 然后你还可以在按钮点击监听器上写入活动B 完成()。它应该有用。
public class A extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(A.this, B.class));
finish(); // you must write this also in A activity to close whole application
}
});
}
public class B extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_1);
Button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
答案 1 :(得分:0)
编辑:我认为有些情况下,基础活动应该或不应该在返回时终止。这将允许您处理这两种情况。
活动A启动活动B,启动活动C.你想要从活动C中关闭所有活动。如果它们都在同一个任务中(也就是你的情况)你可以通过调用来关闭整个任务
finishAffinity();
根据文档,这是发生的事情:
完成此活动以及当前任务中具有相同亲缘关系的紧接其下的所有活动。这通常在应用程序可以启动到另一个任务时使用(例如从它理解的内容类型的ACTION_VIEW),并且用户已经使用向上导航切换出当前任务并进入其自己的任务。在这种情况下,如果用户已导航到第二个应用程序的任何其他活动,则应将所有这些活动作为任务切换的一部分从原始任务中删除。
请注意,此结尾不允许您将结果传递给上一个活动,如果您尝试这样做,则会抛出异常。
活动A启动活动B,启动活动C.您想关闭活动C中的活动B和C.
这是你从B期望和处理结果开始活动C的方式:
public class ActivityB extends Activity {
private static final int RC_ACTIVITY_C = 1;
public static final int RESULT_FINISH = 1;
...
public void startActivityC() {
Intent intent = new Intent(this, ActivityC.class);
startActivityForResult(intent, RC_ACTIVITY_C);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_ACTIVITY_C && resultCode == RESULT_FINISH) {
finish();
}
}
}
这是你让活动B必须从活动C完成的方式。在完成活动C之前的任何时候C:
setResult(ActivityB.RESULT_FINISH);
请参阅Activity.startActivityForResult(Intent, int)和Activity.setResult(int)。
答案 2 :(得分:-1)
您可以尝试System.exit(0)。那应该可以胜任。
编辑:看一下这篇文章,了解finish()和System.exit()之间的区别。 Difference between finish() and System.exit(0)