设置Activity永不过期,即不执行onDestroy()

本文介绍了一种在Android中设置Activity永不销毁的方法,通过重写finish()方法并使用moveTaskToBack(true)替代默认的super.finish(),可以避免Activity被系统回收。

转载自:http://www.cnblogs.com/linjiqin/archive/2011/12/15/2289251.html


设置Activity永不过期,即不执行onDestroy()


/**
* 重写finish()方法
*/
@Override
public void finish() {
//super.finish(); //记住不要执行此句
moveTaskToBack( true ); //设置该activity永不过期,即不执行onDestroy()
}

注意:不要调用super.finish(),只需调用moveTaskToBack(true)就可以,这样只有在第一次启动的时候会执行onCreate()。以后(只要进程不死掉)都不会执行onCreate()

在使用Android开发时,绑定服务(bindService)和解绑服务(unbindService)是常见的操作。正常情况下,当Activity或Fragment销毁时,系统会自动调用onDestroy方法。然而,有时候你会发现unbindService调用后,onDestroy方法却没有执行。这可能是由于以下几个原因: 1. **服务未正确解绑**: 确保在Activity或Fragment的onDestroy方法中调用了unbindService。如果服务没有正确解绑,系统会认为服务再需要,从而会调用onDestroy。 2. **绑定服务的上下文正确**: 确保绑定服务时使用的上下文是正确的。通常情况下,应该使用Activity或Fragment的上下文,而是全局上下文(如ApplicationContext)。 3. **服务内部的问题**: 检查服务内部是否有阻塞线程的操作或其他可能导致onDestroy无法执行的问题。确保服务的生命周期管理正确。 4. **系统资源足**: 在某些情况下,系统资源足可能导致onDestroy无法执行。这种情况比较少见,但也是可能的原因之一。 以下是一个简单的示例,展示了如何正确绑定和解绑服务: ```java public class MyService extends Service { @Override public IBinder onBind(Intent intent) { return binder; } private final IBinder binder = new LocalBinder(); public class LocalBinder extends Binder { MyService getService() { return MyService.this; } } @Override public void onDestroy() { super.onDestroy(); // 清理资源 } } public class MyActivity extends Activity { MyService myService; boolean isBound = false; private ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { MyService.LocalBinder binder = (MyService.LocalBinder) service; myService = binder.getService(); isBound = true; } @Override public void onServiceDisconnected(ComponentName name) { isBound = false; } }; @Override protected void onStart() { super.onStart(); Intent intent = new Intent(this, MyService.class); bindService(intent, connection, Context.BIND_AUTO_CREATE); } @Override protected void onStop() { super.onStop(); if (isBound) { unbindService(connection); isBound = false; } } @Override protected void onDestroy() { super.onDestroy(); // 其他清理工作 } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值