android开发 怎么释放activity的全部内存
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android开发 怎么释放activity的全部内存相关的知识,希望对你有一定的参考价值。
假如现在有三个activity,分别是main,a 和b .a和b都是需要很大内存的,在main中打开a或b,在a或b中直接按返回键,或者直接调用finish,回到main后通过update heap观察刚才打开的activity占用的资源可以很快释放,如果是setResul后再调用finish回到main,发现内存被释放的事件要稍微久一些。
第二个问题,在main中打开a,然后在a中startActivity打开b,然后a.finish,这个时候观察a的内存并没有释放。如果在b中调用finish返回main后,a和b的内存就会被释放掉。 参考技术A 在Activity销毁之前释放资源,以及所有可能导致内存泄漏的引用。 参考技术B 写一个集合,用来存放打开的所有的Activity,再写一个方法,用来退出应用的时候调用,退出时销毁这个集合 参考技术C 是因为activity里的图片多导致的APP退出后手机变卡吧?
android没有提供这类方法,网上有人说在activity结束的时候setContentView为空,但是我测试过,是没有用处的,有种比较粗暴的方法。
退出APP的时候直接调用System.exit(0)或者restartPackage,我是这么做的。本回答被提问者和网友采纳 参考技术D ingly with a sense of re
android开发 修改了数据库后怎么更新
我创建了一个学生表,做了两个Activity ,一个查看学生信息,一个修改学生信息,先打开查看的Activity,看到了其中的学生信息,然后去修改Activity修改学生信息,再去查看Activity看学生信息发现数据没有变化,请问怎么让数据随着修改而改变
给你提供几种方法吧:
在查看学生信息的那个Activity里面,重写onResume方法,在这个方法里面获取数据来显示视图,无论是这个activity新创建,还是从后台不可见转为前台,都会走这个生命周期。
数据显示页面监听数据的变化来更新输入。如果管理数据使用的是 ContentProvider管理的话,直接使用ContentObserver来监听相应的Uri即可,如果不是这种方式的话,可以在操作学生数据库的时候发送一个广播,然后现实学生页面的Activity去监听这个广播,收到广播后去更新界面。
如果是从查看信息界面进入的修改信息界面,那么可以使用startActivityForResult方法启动信息修改界面,信息修改后调用setResult方法返回修改后的数据给信息显示界面,信息显示界面重写onActivityResult方法来获取新的学生信息,从而更新界面
暂时就想到这几种方法吧,希望对你有帮助~
使用监听者模式,监听数据库的变化,然后改变取值。
private void registerObserver()getContentResolver().registerContentObserver(
ContactsContract.Contacts.CONTENT_URI, true, mObserver);
getContentResolver().registerContentObserver(
CallLog.Calls.CONTENT_URI, true, mObserver);
private void unregisterObserver()
getContentResolver().unregisterContentObserver(mObserver);
private ContentObserver mObserver = new ContentObserver(new Handler())
@Override
public void onChange(boolean selfChange)
isContactChanged = true;
; 参考技术B 可以使用更新数据库的语句。
SQLiteDatabase.update(String table,ContenValues values,String whereClausee,String[] whereArgs)追问
我就是用了update语句把数据库给改的,改了以后去看学生信息没有变化啊!!
追答是不是语句出现了问题,再好好看一下
追问是不是跟Activity的生命周期有关?感觉重新打开查看Activity应该是onRestart(),但加入了查询语句还是没变化!!
以上是关于android开发 怎么释放activity的全部内存的主要内容,如果未能解决你的问题,请参考以下文章
Android开发常见的Activity中内存泄漏及解决办法