开发安卓APP关于Activity数据传递五种方式对比,深圳APP开发公司本文就制作Android平台关于Activity数据传递五种实现方式的优缺点对比,下面我们首先说说采用数据传递媒介实现方法。
1.通过Intent传递数据
直接传递——intent.putExtra(key,value)通过bundle——intent.putExtras(bundle)
这两种方式都要求传递的对象必须可序列化(Parcelable或Serializable),且通过intent传递数据是有大小限制的,最好不要超过1M。
2.使用全局对象传递数据
在类中大量地使用静态变量(尤其是使用很占资源的变量,如Bitmap对象)可能会导致内存溢出,而且还可能因为静态变量在很多类中出现而造成代码难以维护和混乱的状况。全局对象可以完全取代静态变量。Android中的全局对象所对应的类可以从android.app.Application继承,如:publicclassMyAppextendsApplication{ publicStringname; publicDatadata=newData(); }在编写完全局类之后,还需要在AndroidManifext.xml中注册。
然后通过Activity.getApplicationContext()方法可以获得全局对象。MyAppapp=(MyApp)getApplicationContext();app.name="abc";app.data.id ="100";由于某些原因(比如系统内存不足),APP会被系统强制杀死,此时再次点击进入应用时,系统会直接进入被杀死前的那个界面,但此时APP的内存已经被释放,数据为空,可能会出现异常,因此需要特别关注此种情况。
3.使用单例对象传递数据
示例代码如下所示:publicclassMyApplication{ privateStringdata; privateMyApplication(){} publicstaticMyApplicationgetInstance(){ returnMyApplicationHolder.sInstance;
} privatestaticclassMyApplicationHolder{ privatestaticfinalMyApplicationsInstance=newMyApplication(); } publicStringgetData(){ returndata; } publicvoidsetData(Stringdata){ this.data=data; }}设置数据:MyApplication.getInstance().setData(data);在Activity中获取数据:Stringdata=MyApplication.getInstance().getData();
4.使用静态变量传递数据
(1)直接设置和获取变量的值。如在MainActivity中定义变量。publicstaticStringName;在别的Activity中可以使用MainActivity.Name这种方式设置和获取变量的值。
(2)通过接口方法设置和获取变量的值。publicclassMyApplication{ privatestaticStringdata; publicstaticStringgetData(){ returndata; } publicstaticStringsetData(Stringdata){ this.data=data; }
}设置数据:MyApplication.set(data);获取数据:MyApplication.get();
5.使用持久化方式传递数据
也就是使用Sqlite、SharePreference和File等传递数据。
(1)优点应用中所有地方都可以访问。不会因为系统内存不足而丢失数据。
(2)缺点
操作麻烦。效率低下。好了,APP开发公司本文关于“Activity数据传递五种方式以及优缺点对比”的知识就分享到这里,谢谢关注,博纳网络编辑整理。