调用 finishAffinity() 不会破坏 android 应用或活动。即使重新启动应用,活动数据仍会保留
这是一个巨大的Android编程问题/错误。
调用 finishAffinity() 不会关闭我的应用程序。
这可以从以下事实中得到证明:
1.Android Studio调试器仍然说“应用程序正在运行”,即使应用程序从屏幕上消失并且我又回到了手机主屏幕。
2. “重新启动”应用程序时,初始活动的数据成员的值与应用程序“关闭”之前的值保持不变。
3. 如果我在 finishAffinity() 之后直接调用 System.exit(0),则关闭工作正常,数据成员被重置为其初始默认值。
这个问题还有更大的影响!当我在启动另一个 ActivityB 后在 ActivityA 中调用 finish() 时,如果我返回到 ActivityA,则数据成员尚未重置为默认值仍然是旧值。
这对我来说是令人困惑的,因为我来自C++当一个类被摧毁时,它实际上被摧毁了,所有与它相关的内存都被完全释放了。
让活动在切换到新活动或尝试退出应用程序时完全删除自身似乎是不可能的。
public class Startup extends AppCompatActivity
{
private static int iStarted = 0;
............
@Override
protected void onActivityResult(int request, int result, Intent data)
{
super.onActivityResult(request, result, data);
if (request == RESULT_EULA_RETURNED)
{
// shutdown
finishAffinity(); // iStarted remains = 1
return;
}
}
..........
@Override
protected void onResume()
{
super.onResume();
// perform startup
// even when restarted this remains = 1
if (iStarted == 0)
{
iStarted = 1; // this will stay = 1 until the application is manually killed via the CLOSE ALL method or via the debugger
}
}
}