我有一个登录表单,我使用sheredpreferences来存储登录,如果用户没有按下记住我按钮,我会在5分钟内保存用户名,之后用户名将被删除。 如果在登录后,让我们说3分钟过去了,我关闭应用程序,现在我不需要执行计时器,如何从正在运行的活动关闭计时器,在这种情况下lertags.java?
继承人代码......
login.java
CheckBox checkBox = (CheckBox) findViewById(R.id.silent_switch);
if(checkBox.isChecked())
{
//save data username and password
SharedPreferences.Editor prefEditor = gameSettings.edit();
prefEditor.putString("UserName",txtperson.getText().toString());
prefEditor.putString("Password", txtpass.getText().toString());
prefEditor.commit();
}
else
{
//create timer for 10 seconds,after that delete the user
TimerTask updateProfile = new CustomTimerTask(Login.this);
timer.schedule(updateProfile, 10000);
}
//save the value user and the poosition
SharedPreferences.Editor prefEditor = gameSettings.edit();
prefEditor.putString("User",user);
prefEditor.putString("Posto", posto);
prefEditor.commit();
//mensagemexibir("Login", "Welcome: "+user);
Intent i = new Intent(Login.this, LerTags.class);
startActivityForResult(i, 2);
setResult(2);
finish();
CustomTimertask.java
public class CustomTimerTask extends TimerTask {
private Context context;
private Handler mHandler = new Handler();
// Write Custom Constructor to pass Context
public CustomTimerTask(Context con) {
this.context = con;
}
@Override
public void run() {
// TODO Auto-generated method stub
// your code starts here.
// I have used Thread and Handler as we can not show Toast without starting new thread when we are inside a thread.
// As TimePicker has run() thread running., So We must show Toast through Handler.post in a new Thread. Thats how it works in Android..
new Thread(new Runnable() {
public void run() {
mHandler.post(new Runnable() {
public void run() {
Toast.makeText( context, "10 seconds pass delete the user", Toast.LENGTH_LONG).show();
SharedPreferences.Editor prefEditor = gameSettings.edit();
prefEditor.putString("User","");
prefEditor.commit();
}
});
}
}).start();
}
public void startact() {
// TODO Auto-generated method stub
}
答案 0 :(得分:0)
将任务存储在班级的成员变量中,并在不再需要时调用取消(例如onPause或onStop,具体取决于你想要做什么)。
答案 1 :(得分:0)
非常简单。当您使用CustomTimerTask时,只需在您的应用程序即将关闭时,让我们说onDestroy()或应用程序的任何其他出口点,您可以写下这一行:
updateProfile.cancel();
答案 2 :(得分:0)
在所有活动中维护全局变量的最佳方法是在Application
类
1)创建一个扩展A
Application
)
2)在班级TimerTask updateProfile
中创建A
个实例。
3)创建方法以启动和取消课程A
中的计时器任务[例如:startTimer()
,cancelTimer()
]
3)现在可以从导航到的任何Activity
用户访问。
4)你可以从任何活动取消计时器[例如:((A)getApplicationContext()).cancelTimer()
]。