申请即使在结束后也会开始

时间:2011-09-15 07:55:45

标签: android

这是我的第一个活动,当我按下手机中的后退按钮时,应用程序关闭,但第二个活动即使在关闭后也会弹出!可能是因为线程仍在运行?但我试图摧毁它但无济于事!任何建议

protected void onCreate(Bundle myclass) {
    super.onCreate(myclass);
    setContentView(R.layout.splash);
    timer = new Thread() {
        public void run() {
            try {
                sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            } 
            finally {
                Intent openStarting = new Intent("nik.tri.MENU");
                startActivity(openStarting);
            }
        }
    };
    timer.start();
}

@Override
protected void onPause() {
    super.onPause();
    timer.destroy(); // tried timer.stop() as well 
    finish();
}

}

2 个答案:

答案 0 :(得分:3)

是的,Thread参与了该过程:

当您按下后退按钮时,您不会销毁或停止您的应用程序,只是让它不可见。当时调用onPause(),但finish()只会终止Activity的工作流程:Activity它仍在内存中,成为后来在某些时候被摧毁了。所以Thread一直在运行。并且调用Thread.stop()效率不高as explained in the doc

  

不推荐使用此方法。因为以这种方式停止线程是不安全的,并且可能使您的应用程序和VM处于不可预测的状态。

所以Thread仍然在运行,这就是应用程序在3秒后重新启动的原因。或者我应该说,开始一个新的Activity

我不明白为什么你使用这个Thread在3秒后开始一个新的Activity,但是认为这是理所当然的,你应该:

  • 使用boolean中的Thread来确定您是否可以开始:

    timer = new Thread() {
        public void run() {
            try {
                sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            } 
            finally {
                if (!paused) {
                    Intent openStarting = new Intent("nik.tri.MENU");
                    startActivity(openStarting);
                }
            }
        }
    };
    
  • 并在onPause() / onResume()中处理该标记:

    @Override
    protected void onPause() {
        paused = true;
        super.onPause();
    
        finish(); // well, I don't get that either, but I take it for granted as well.
    }
    
    @Override
    protected void onResume() {
        super.onResume();
        paused = false;
    }
    

答案 1 :(得分:0)

尝试在OnDestroy方法中终止应用程序。

int pid=android.os.Process.myPid();
 android.os.Process.killProcess(pid);

试试这个,可能会对你有所帮助