Android 用application保存全局变量,关于Android中传递数据的一些讨论
来源:互联网 发布:淘宝客高佣金计划 编辑:程序博客网 时间:2024/05/27 09:48
intent.putExtra("param1", "data1");
intent.putExtra("intParam1", 20);
startActivity(intent);
这样就ok了。在当前Activity将两个值传到了Test中。但如果遇到不可序列化的数据,如Bitmap、InputStream等,intent就无能为力了。因此,我们很自然地会想到另外一种方法,静态变量。如下面的代码所示:
{
public static Bitmap mBitmap;
}
对于上面的代码来说,其他任何类可以直接使用Product中的mBitmap变量。这么做很easy、也很cool,但却very very wrong。我们千万不要以为Davlik虚拟机的垃圾回收器会帮助我们回收不需要的内存垃圾。事实上,回收器并不可靠,尤其是手机上,是更加的不可靠。 因此,除非我们要使自己的程序变得越来越糟糕,否则尽量远离static。
(个人PS:有待检验)
注:如果经常使用static的Bitmap、Drawable等变量。可能就会抛出一个在Android系统中非常著名的异常(以前budget这个单词一直记不住什么意思,自从经常抛出这个异常后,这个单词终于烂熟于心了,)
ERROR/AndroidRuntime(4958): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
如果不使用static,总得有方法来代替它(尽管我很喜欢public static,我相信很多人也喜欢它,但为了我们的程序,建议还是忍痛割爱吧),那么这个新的解决方案就是本文的主题,这就是Application Context,相当于Web程序的Application,它的生命周期和应用程序一样长(这个我喜欢)。
那么现在来看看如何使用这个Application Context。我们可以通过Context.getApplicationContext或Context.getApplication方法获得 Application Context。但要注意,我们获得的只是Context对象,而更理想的方法是获得一个类的对象。ok,说干就干,下面来定义一个类。
import android.app.Application;
import android.graphics.Bitmap;
public class MyApp extends Application
{
private Bitmap mBitmap;
public Bitmap getBitmap()
{
return mBitmap;
}
public void setBitmap(Bitmap bitmap)
{
this.mBitmap = bitmap;
}
}
上面这个类和普通的类没什么本质的不同。但该类是Application的子类。对了,这就是使用Application Context的第一步,定义一个继承自Application的类。然后呢,就在这个类中定义任何我们想使其全局存在的变量了,如本例中的 Bitmap。下面还需要一个重要的步骤,就是在<application>标签中使用android:name属性来指定这个类,代码如 下:
</application?
接下来的最后一步就是向MyApp对象中存入Bitmap对象,或从MyApp对象中取出Bitmap对象了,存入Bitmap对象的代码如下:
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.icon);
myApp.setBitmap(bitmap);
获得Bitmap对象的代码:
MyApp myApp = (MyApp)getApplication();
imageview.setImageBitmap(myApp.getBitmap());
上面两段代码可以在任何的Service、Activity中使用。全局的
转载自:http://blog.csdn.net/nokiaguy/article/details/5998986
- Android 用application保存全局变量,关于Android中传递数据的一些讨论
- 关于Android中传递数据的一些讨论 intent行不通,static不让用的时候用application
- 关于Android中传递数据的一些讨论
- 关于Android中传递数据的一些讨论
- 关于Android中传递数据的一些讨论
- 关于Android中传递数据的一些讨论
- 关于Android中传递数据的一些讨论
- 关于Android中传递数据的一些讨论
- 关于Android中传递数据的一些讨论
- 关于Android中传递数据的一些讨论
- 关于Android中传递数据的一些讨论
- android中application 关于全局变量
- android中application 关于全局变量
- android中application 关于全局变量
- android中application 关于全局变量
- 在Android中使用Application保存全局变量
- Android中Application使用,保存应用程序全局变量
- android 使用Application保存全局变量
- Hash join算法原理
- 《Qt编程的艺术》——8.1.1 显示类(The View Classes)
- ASP.NET获取URL及虚拟根目录
- Tips for ABAP Performance Tunning
- 程序员笔试知识点整理
- Android 用application保存全局变量,关于Android中传递数据的一些讨论
- baiduMap 使用Fragment的方法
- Memcached Client Forjava API (http://blog.sina.com.cn/s/blog_7fe75a5901019o8g.html)
- HEVC学习(六) —— 帧内预测系列之四
- ABAP serch关键字
- Glade两种布局文件格式GtkBuilder和Libglade在python中的导入代码
- IE10内存防护机制 让黑手无机可乘【绿色】
- hdu 1002 A + B Problem II(高精度加法)
- iOS中四种实例变量的范围类型@private@protected@public@package