我有一个用户登录和注销的应用程序。在登录时,它告诉我的DataBase用户在线。我遇到的问题是,当用户暂时没有使用该应用程序并且处理器杀死我的应用程序时,是否有一种方法或某些东西,我可以运行我的最后一段代码来记录它们?我查看了android生命周期,我不能使用destroy,因为它只与该活动有关。谢谢!
答案 0 :(得分:1)
我找到了一个解决方案 - 不完美但对我有用。
1。)创建一个服务,以便在创建第一个活动时启动的后台运行。
2。)每个活动都绑定到这个服务,因此它可以“登记”(即它是活着的和onPause)没有被调用)
3.。)在每个活动注册中,广播接收者定期收听该服务发起的意图。
4。)收到chech-in意图后,它会调用一个服务方法,它基本上让服务现在有一个活动仍然存活(如果它有windowFocus,我只会响应意图
5.。)如果办理登机手续,服务会休眠,然后重新申请办理登机手续,如果没有办理登机手续,则会在重新申请办理登机手续之前暂停一段时间,如果没有回应然后应用程序注销。 (当没有找到签到时第二次请求的原因是在活动转换期间考虑到签到问题,即开始新活动并关闭当前活动)。
正如我所说,这不是最好的方法,但到目前为止似乎能满足我的需求。
答案 1 :(得分:0)
为什么你不能使用你活动的onDestroy方法?如果你有很多活动,你可以创建自己的基本活动类,并从这个基类派生你所有的活动。
public abstract class BaseActivity extends Activity {
....
@Override
public void onDestroy() {
super.onDestroy();
// do your stuff here
}
}
然后创建所有活动:
public class YourActivity extends BaseActivity {
...
}
答案 2 :(得分:-1)
在AndroidManifest中你有名字。现在创建
public class MyName extends Application {
}
这是您的Application类,一旦用户打开您的应用程序就会自动创建。现在只需覆盖MyName类中的onTerminate()方法。
@Override
public void onTerminate() {
user.logOut();
super.onTerminate();
}
您只需使用以下代码即可在每个Activity中使用MyName类:
MyName myName= (MyName) this.getApplication();
myName.logUser(user);