上一篇我们谈到了,当应用程序恢复时,由于FragmentPagerAdapter对Fragment进行了缓存的读取,导致其并未使用在Activity中新创建的Fragment实例.今天我们来看如何解决这种情况.  根据上篇Blog的描述,我们不难发现,目前需要解决的问题有以下两个:  1. 缓存Fragment内部成员变量缺失的问题.  2. 新Fragment的创建和缓存Fragment使用之间的矛盾.  下面先来解决第一个问题,缓存Fragment内部成员变量缺失.上篇Blog中,Fragm…
ViewPager + FragmentPagerAdapter,时我们经常使用的一对搭档,其实际应用的代码也非常简单,但是也有一些容易被忽略的地方,这次我们就来讨论下FragmentPagerAdapter对Fragment的缓存应用.  我们可以先看看最简单的实现,自定义Adapter如下: [代码]java代码: ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 public class…
我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效率.如果学过JavaWeb的朋友,首先可能想到的是数据库.当然了数据库是一个方案,那么是否还有其他的解决方案呢?今天我们在讲下Android笔记——Android中数据的存储方式(一) 提到的除了SharedPreferences和Files(文本文件)以外的其他几种数据储存方式:xml文件.SQL…
这几天在回顾Android的基础知识,就把一些常见的知识点整理一下,以后忘了也可以翻出来看一看. 简单介绍一下Activity的生命周期 在API文档中对生命周期回调的函数描述的很详细,这里我只是翻译了一下. onCreate:当Activity第一次被创建的时候调运.应该在这个回调函数中做所有的初始化操作,比如:创建View,给lists绑定数据等.在这个函数执行完后,通常会调运onStart方法.Always followed by onStart()(这句就不用翻译了吧) onRestar…
准备工作: 我们模拟一个注册的页面,先看UI 我们需要创建一个数据库:user,数据库包含表user,user表包含字段id.username.password.mobilephone MainActivity.java package cn.lixyz.sqlitedemo; import android.app.Activity; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import a…
android的Viewpager 的各种经常的用法,朋友问我要过,所以就稍微总结一下, ViewPager + Fragment 经常用到  代码是从   actionbarsherlock 中提取出来的,这个效果都知道是 滑动来切换的.直接上代码了 在这里简单说明一下 FragmentStatePagerAdapter 和 FragmentPagerAdapter 2个adapter 第一种 fragment状态adapter -  在当前只会存在   前1个fragment  当前 fra…
一.如果多个Activity拥有同一个Intent Action,启动时用同一个Action启动会是什么情况? 如何指定某一个Activity启动? 在多个Activity拥有同一个Intent Action的情况下,如若想启动某一指定Activity,则在该<intent-filter> 中添加<data android:scheme="app"/>.而且,将启动的代码写为: startActivity(new Intent("com.w.learn…
跨应用绑定Service并通信: 1.(StartServiceFromAnotherApp)AIDL文件中新增接口: void setData(String data); AppService文件中实现接口: public IBinder onBind(Intent intent) { return new IAppServiceRomoteBinder.Stub() { @Override public void basicTypes(int anInt, long aLong, boole…
Fragment中AlertDialog弹出窗口的使用 Fragment默认不具有Content的一些方法和属性,因此在Activity中可以使用的一些方法在Fragment中使用就需要一些小技巧了 初始化AlertDialog窗口 AlertDialog.Builder askDialog = new AlertDialog.Builder(getActivity());如上,在使用Content的地方使用getActivity()来获得Fragment所在Activity来初始化窗口 Fra…
在“加载大图”文章中提到的BitmapFactory.decode*方法,如果源数据是在磁盘.网络或其它任何不是在内存中的位置,那么它都不应该在UI线程中执行.因为它的加载时间不可预测且依赖于一系列因素(磁盘读写速度.图片大小.CPU频率等).如果在主线程中执行这个操作,一旦它阻塞了主线程,就会导致系统ANR.本节介绍使用AsyncTask在后台处理图片和演示怎么处理并发问题. 一.使用一个AsyncTask AsyncTask类提供一个简易的方法在后台线程中执行一些任务并把结果发布到UI线程.…