我已经处理过应用程序后我在RAM中出现的应用程序。每次播放应用程序时,RAM的大小也会增加。我不知道为什么会这样。请给我一些建议。
此外,我在我的应用程序中使用计时器15秒,在完成时间之后,我显示I Dialog您的时间已经结束。但有时候,对话框会在一次完成时间内出现3-4次。这对我的申请来说非常尴尬。这件事是由于应用程序在后台或我的计时器有什么问题。 计时器代码如下。 全球宣布
MyCount counter = new MyCount(time, 1000);
,定时器代码为:
public class MyCount extends CountDownTimer {
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
//call when time is finish
public void onFinish() {
// TODO Auto-generated method stub
AlertDialog.Builder alertbox = new AlertDialog.Builder(game.this);
alertbox.setMessage("Oops, your time is over");
alertbox.setNeutralButton("Ok",
new DialogInterface.OnClickListener() {
// Click listener on the neutral button of alert box
public void onClick(DialogInterface arg0, int arg1) {
quesCount++;
for(int i=0;i<4;i++){
btn[i].setVisibility(View.VISIBLE);
}
rndom_no=randomno();
showDataOverControls(rndom_no);
counter.start();
}
});
alertbox.show();
}
@Override
public void onTick(long millisUntilFinished) {
time1 = (TextView) findViewById
(R.id.time);
time1.setText(""+millisUntilFinished / 1000);
}
}
应用程序内部的for循环改变了按钮的可见性,rndom_no = randomno();此函数生成随机数,showDataOverControls(rndom_no);它通过xml解析从xml文件中获取数据。 如果我做错了,请建议。
答案 0 :(得分:1)
只要android想要它,你的应用就会停留在RAM中。你无法控制它。
尝试通过配置launchMode
属性来阻止它增加来重用这些活动。
另外,使用一些标志来检查对话框显示,如果已经显示则不显示
答案 1 :(得分:1)
你的应用程序停留在手机内存,以允许用户在没有太多加载时间的情况下返回应用程序。 Android内存系统的工作方式是,只要不需要内存,最后使用的应用程序就会留在RAM中。别担心。如果另一个应用程序需要此内存且您的应用程序没有活动等前台组件,则整个应用程序将逐步关闭,直到手机再次有足够的内存。阻止内存的唯一方法是创建设计非常糟糕的服务。如果前台服务需要内存,甚至服务也会关闭。