我想在用户离开后立即杀死活动

时间:2016-03-29 07:19:48

标签: java android android-studio

我有一个应用程序(3D游戏),并使用4个活动的启动页面和介绍。

比赛开始时,其他活动不会自杀。我正在用真实和虚拟设备测试它。我知道android系统在需要的时候回收内存,我的应用程序适用于所有设备和屏幕尺寸,除了内存不足的设备,它们似乎有足够的内存来运行游戏而没有那些额外的内存使用因为android只从Kitkat回收内存,运行软糖的设备很快就会堵塞并崩溃。

有没有办法在用户离开后立即结束我的活动?这是我的一个启动页面,它们使用计时器移动到下一个活动。

new CountDownTimer(3000, 1000) {

    public void onFinish() { 
        Intent intent1 = new Intent(activity1.this,activity2.class);
        startActivity(intent1); 
        overridePendingTransition(R.anim.fadein, R.anim.fadeout); 
        finish(); 
    }
    public void onTick(long millisUntilFinished){
    }
}.start();

3 个答案:

答案 0 :(得分:1)

您可以使用:

  • FLAG_ACTIVITY_CLEAR_TOP
  • FLAG_ACTIVITY_SINGLE_TOP
  • FLAG_ACTIVITY_CLEAR_TASK
  • FLAG_ACTIVITY_NEW_TASK

示例(完成之前的所有活动)

Intent intent = new Intent(getApplicationContext(), Home.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK)

它将完全清除以前的所有活动并开始新的活动。

答案 1 :(得分:0)

public static void goTo(Activity from, Class<?> to) {
    Intent intent = new Intent(from, to);
    if (from != null)
    {
        from.startActivity(intent);
        from.finish();  //**This will do**
    }
}

对于您的情况,您应该致电 activity1.finish();

答案 2 :(得分:0)

Activity是一个Java对象。在Java中,您不会自己删除对象,垃圾收集器会为您执行此操作。因此,您无法手动从内存中删除Activity,但您可以做一些有助于垃圾收集器删除活动的事情:

  1. 确保在转移到其他活动后不保存任何指向活动对象的链接
  2. 调用finish() - 与代码示例一样。
  3. 多数民众赞成,垃圾收集器将在需要时从内存中删除活动。

    P.S我不认为你的内存问题是由于没有从内存中删除活动造成的。看看其他优化内存使用的能力,即对于内存不足的设备,可以使用质量较小或质量较差的图像/模型。