如何在Android中模仿有限性?
这个问题不言自明 我正在做一个类,注册用户的活动,以避免不活动,在2分钟没有活动或每次用户最小化应用程序后,应用程序应该关闭。我的代码如下所示:如何在Android中模仿有限性?,android,android-activity,affinity,Android,Android Activity,Affinity,这个问题不言自明 我正在做一个类,注册用户的活动,以避免不活动,在2分钟没有活动或每次用户最小化应用程序后,应用程序应该关闭。我的代码如下所示: public class InActivityTimer extends Activity { public static final long DISCONNECT_TIMEOUT = 2*60*1000; // 2 min = 2 * 60 * 1000 ms public static int ESTADO_ACTIVIDAD=
public class InActivityTimer extends Activity {
public static final long DISCONNECT_TIMEOUT = 2*60*1000; // 2 min = 2 * 60 * 1000 ms
public static int ESTADO_ACTIVIDAD=0; //Variable para saber si la actividad está al frente o no.
private static Handler disconnectHandler = new Handler(){
public void handleMessage(Message msg) {
}
};
private Runnable disconnectCallback = new Runnable() {
@Override
public void run() {
// Perform any required operation on disconnect
//finish();
finishAffinity();
Intent intent = new Intent(getApplicationContext(),VentanaInactividadCierreAplicacion.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
//intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
};
public void resetDisconnectTimer(){
disconnectHandler.removeCallbacks(disconnectCallback);
disconnectHandler.postDelayed(disconnectCallback, DISCONNECT_TIMEOUT);
}
public void stopDisconnectTimer(){
disconnectHandler.removeCallbacks(disconnectCallback);
}
@Override
public void onUserInteraction(){
resetDisconnectTimer();
}
@Override
public void onResume() {
super.onResume();
ESTADO_ACTIVIDAD ++;
resetDisconnectTimer();
comprobarEstado();
}
private void comprobarEstado() {
if (ESTADO_ACTIVIDAD == 0){
// Intent startMain = new Intent(getApplicationContext(), SplashScreen.class);
// startMain.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
// startActivity(startMain);
// finish();
finishAffinity();
Toast.makeText(getApplicationContext(), "RandomPassGEN cerrado por seguridad", Toast.LENGTH_SHORT).show();}
}
@Override
public void onStop() {
super.onStop();
ESTADO_ACTIVIDAD--;
stopDisconnectTimer();
comprobarEstado();
}
/* @Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(getBaseContext(),"La aplicación se reiniciará por seguridad", Toast.LENGTH_SHORT).show();
finishAffinity();
}*/
}
正如你所看到的,我使用finishafinity两次。我怎么能使用这个命令呢?我想避免它,因为使用finishAffinity()需要android+4.1
非常感谢您的帮助。要关闭您的应用程序,请执行以下操作:
Intent intent = new Intent(this, MyRootActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("exit", true);
startActivity(intent);
MyRootActivity
应该是任务的根活动(清单中的ACTION=MAIN,CATEGORY=LAUNCHER)
在MyRootActivity.onCreate()
中,在super.onCreate()
之后添加以下内容:
只有当
MyRootActivity
在启动工作流中的下一个活动时不调用finish()
时,这才有效。如果MyRootActivity
在它启动下一个活动时调用了finish()
,则应更改它,使其不会。在这种情况下,您需要将用户返回到MyRootActivity
的情况作为特殊情况处理。您想从任务中删除所有活动吗?您的活动是否在另一个应用程序的任务中运行?不,它们不是@DavidWasser@user1269737你为什么要添加此评论?这是没有必要的。我不知道你为什么这么认为。如果您有特定问题,请创建一个新问题。您的评论令人困惑。@user1269737不在此场景中。用户的应用程序已在运行。这不会导致“启动”Intent
被存储为任务的根目录,其中包含额外的“退出”。这里不需要那张支票。这是令人困惑的。
if (getIntent().hasExtra("exit")) {
// User wants to exit, so do that
finish();
return;
}
... here is the rest of your onCreate() code