1、展示webview的activity可以另开一个进程,这样就能和我们app的主进程分开了,即使webview产生了oom崩溃等问题也不会影响到主程序,如何实现呢,其实很简单,在androidmanifest.xml的activity标签里加上android:process=”packagename.web”就可以了,代码如下:

运行起来就会发现多了一个进程,哈哈

2、webview的创建也是有技巧的,最好不要在layout.xml中使用webview,可以通过一个viewgroup容器,使用代码动态往容器里addview(webview),这样可以在onDestory()里销毁掉webview及时清理内存,另外需要注意创建webview需要使用applicationContext而不是activity的context,销毁时不再占有activity对象,这个大家应该都知道了,最后离开的时候需要及时销毁webview,onDestory()中应该先从viewgroup中remove掉webview,再调用webview.removeAllViews();webview.destory(); 代码如下:

创建:

    ll = new LinearLayout(getApplicationContext());     ll.setOrientation(LinearLayout.VERTICAL);    wv = new WebView(getApplicationContext());

销毁:

@Overrideprotected void onDestroy() {    ll.removeAllViews();    wv.stopLoading();    wv.removeAllViews();    wv.destroy();    wv = null;    ll = null;    super.onDestroy();}

3、进一步的优化,activity被动被杀之后,最好能够保存webview状态,这样用户下次打开时就看到之前的状态了,嗯,就这么干,webview支持saveState(bundle)和restoreState(bundle)方法,所以就简单了,哈哈,看看代码吧:

保存状态:

@Overrideprotected void onSaveInstanceState(Bundle outState) {    super.onSaveInstanceState(outState);    wv.saveState(outState);    Log.e(TAG, "save state...");}

是不是很熟悉啊,哈哈

恢复状态:

在activity的onCreate(bundle savedInstanceState)里,这么吊用:

if(null!=savedInstanceState){    wv.restoreState(savedInstanceState);    Log.i(TAG, "restore state");}else{    wv.loadUrl("http://3g.cn");}

试用一下,结果还是令人满意的,恢复的相当到位啊!32个赞!!!

但是,我还是有一个疑问,朋友圈打开网页back之后再打开也能恢复到原来位置,不知道他们怎么做到的,正常back的话是不会调用onSaveInstanceState(bundle)的,我们正常就没法保存状态了,希望知道的朋友可以回复我一下,谢谢。

好了,先写这么多。

更多相关文章

  1. 《第一行代码》-第一次学习笔记(第一章).md
  2. android中如何通过代码来开启和关闭移动网络
  3. android布局之selector(背景选择器)[转]
  4. Android跨进程通信IPC之19——AIDL
  5. android 垂直 SeekBar 源代码(VerticalSeekBar)
  6. Android之Intent(一)
  7. android电量优化之Battery Historian工具使用
  8. Android中 网络框架Volley的用法
  9. Android(安卓)DownloadManager 的使用

随机推荐

  1. [转]快速切换Android工程版本的方法
  2. [原创]Android在eclipse下出现Failed to
  3. android 8.0 Notification 的处理
  4. android进程创建分析
  5. [转]有关Android线程的学习
  6. Android 内存浅析【管理、机制、分析】
  7. Android双向选择控件DoubleSeekBar使用详
  8. Android_TextView属性XML详解
  9. 每一位Android开发者应该知道的Android体
  10. Android Q Beta 6 终极测试版发布!