Android——Application全局变量应用
来源:互联网 发布:淘宝发货地不一样 编辑:程序博客网 时间:2024/06/05 16:52
最近写的一个apk需要在多个activity之间操作使用同一数据,使用intent 以及broadcast都没有application来的方便!
Application类是一个基类,生命周期最长,我们可以继承这个类,重写一些需要用的方法,创建一些数据,那么在Application启动的时候,就会实例化你重写的这个类!
在这个应用程序中的所有activity都可以通过getApplication()获取实例,进行操作。
我重写的一个用来保存全局vector的application,可以在多个activity中对bookdata进行操作!
public class Mapplication extends Application{private static final String TAG = "Mapplication";private Vector<Book>bookdata=new Vector<Book>();public void onCreate(){super.onCreate();bookdata.clear();/*data init*/ Log.d(TAG, "application create");}public int getbookcount(){return bookdata.size();}public Vector <Book> getbookdata(){return bookdata;}public void setbookdata(Vector<Book> bookdata){this.bookdata.clear();this.bookdata.addAll(bookdata);}public boolean addbook(Book book){String addbookname=book.bookname;for(int i=0;i<bookdata.size();i++){if(bookdata.get(i).bookname.equals(addbookname))return false;}bookdata.add(book);return true;}
在 AndroidManifest.xml中的Application中声明
android:name=“Mapplication”
<application android:name="Mapplication" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.jscese.moonread.MoonMainActivity" android:label="@string/app_name" android:theme="@style/MoonTheme.NoTitleBar" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
尤为注意的一点:Mapplication.java必须要和主activity在同一个包里面!也就是你的应用程序的主包下!不然就报错:
ActivityThread.handleBindApplication(ActivityThread$AppBindData) line: 4400
在任何一个activity中都可以通过(Mapplication)getApplication()获取实例对象:
public void init(){mapplication=(Mapplication) getApplication();bookshelf=mapplication.getbookdata();if(mapplication.getbookcount()==0)withoutbook=true;}@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.moonmain);init();findview();setlistener();}
这样就可以在多个activity中对同一数据进行维护,也可以变相的实现通信。
如果想要进行其它的通信操作,比如更新UI什么的,可以通过Mapplication实例传递主线程activity的handler引用!在另外的activity中通过实例获取handler引用然后就可以handler.sendMessage(msg);
达到在主线程handler message 更新UI或者其它操作!这样还是比较方便的。
- Android——Application全局变量应用
- android全局变量设置——Application使用
- Android通过Application存储应用全局变量
- Android中application 全局变量
- Android中application 全局变量
- android application全局变量
- android 全局变量 Application
- Android Application 创建全局变量
- Android Application 创建全局变量
- Android Application 创建全局变量
- Android App全局变量Application
- Application类应用之全局变量
- Application类应用之全局变量
- android中application 关于全局变量
- Android|Application+Singleton|管理全局变量|
- android中application 关于全局变量
- Android使用Application代替全局变量
- android中application 关于全局变量
- 查看v$lock的时候tx锁的id1怎么转换为usn和slot
- OCP-1Z0-053-V13.02-60题
- 基金
- PhpExcel中文帮助手册|PhpExcel使用方法
- python模块--ip地址转换为整数
- Android——Application全局变量应用
- ETL的增量抽取机制
- 表单设计器的调研总结
- 判断socket是否连接(windows socket)
- :如何用C#在Asp.net中实现打开新网页而不关闭当前页
- Android ViewPager使用详解
- 自定义ImageView点击缩放
- DOC命令学习
- Java学习笔记----------集合Set