我有一个应用程序(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();
答案 0 :(得分:1)
您可以使用:
示例(完成之前的所有活动)
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,但您可以做一些有助于垃圾收集器删除活动的事情:
多数民众赞成,垃圾收集器将在需要时从内存中删除活动。
P.S我不认为你的内存问题是由于没有从内存中删除活动造成的。看看其他优化内存使用的能力,即对于内存不足的设备,可以使用质量较小或质量较差的图像/模型。