我看过几个例子,但我无法弄清楚我做错了什么。
Auto logout after 15 minutes due to inactivity in android
在查看该示例后,我创建了一个扩展Service的LogoutService类。此外,我是否还必须有一个调用我的登录活动的意图?像这样:
Intent intent = new Intent(getBaseContext(), LoginActivity.class);
startActivity(intent);
我的LogoutService类
public class LogoutService extends Service {
public static CountDownTimer timer;
private final String TAG="Service";
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
timer = new CountDownTimer(1 * 60 * 1000, 1000) {
public void onTick(long millisUntilFinished) {
//Some code
Log.v(TAG, "Service Started");
}
public void onFinish() {
Log.v(TAG, "Call Logout by Service");
// TODO should I create an Intent
// my Login method here?
stopSelf();
}
};
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
并把它放在我所有其他课程中:
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
try {
LogoutService.timer.start();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
LogoutService.timer.cancel();
}
但是我一直得到一个空指针异常 LogoutService.timer.cancel();
我用if语句包围它,检查它是否为空,但没有任何反应,不确定我应该做什么。
答案 0 :(得分:0)
由于LogoutService.timer.cancel();
而获得空指针异常
由于LogoutService
扩展了Service
类,但没有使用startService
方法启动它,因此未调用onCreate
方法且timer
为null
。
请执行以下操作:
使用startService
和stopService
方法启动/停止服务
取消服务的onDestory()
中的计时器。
在LogoutService
AndroidManifest.xml
课程作为服务
醇>