android中Application是用来保存全局变量的,在package创建的时候就存在了,到所有的activity都被destroy掉之后才会被释放掉。所以当我们需要全局变量的时候只要在application中去实现,通过调用Context的getApplicationContext或者Activity的getApplication方法来获得一个Application对象,就可以设置或读取全局变量的值。
启动Application时,系统会创建一个PID,即进程ID,所有的Activity就会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。
实例演试:如果把输入里的内容设置为全局变量,那么有下面两种情况。
具体实现方法如下:
一. 新建共享的全局变量
新建一个共享变量的类WirelessApp,需要继承Application
package com.wirelessqa.testintent; import android.app.Application; /** * 继承application,设置全局变量 * @author bixiaopeng 2013-2-18 上午11:32:19 */ public class WirelessApp extends Application { private String username; public String getUsername() { returnusername; } public void setUsername(String username) { this.username = username; } }
二.配置AndroidMainifest.xml
在AndroidMainifest.xml中声明一下全局变量的类,这时Android就会建立一个全局可用的实例
在Application属性中设置android:name=".WirelessApp"
三.调用全局变量
可以在其它任何地方使用Content.getApplicationConext()来获取这个实例,再来获取全局变量
package com.wirelessqa.testintent; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { private EditText edit = null; private Button button = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edit = (EditText)findViewById(R.id.edit); button = (Button)findViewById(R.id.btn_submit); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String result = edit.getText().toString(); //获得应用程序实例 WirelessApp app = (WirelessApp)getApplicationContext(); //给全局变量赋值 app.setUsername(result); //启动另一个activity Intent intent = new Intent(MainActivity.this, ResultActivity.class); startActivity(intent); } }); } }
四.调用全局变量的值
package com.wirelessqa.testintent; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; /** * 显示结果的Activity * * @author bixiaopeng 2013-2-18 上午11:29:50 */ public class ResultActivity extends Activity { private TextView text = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_result); //获得应用程序实例 WirelessApp app = (WirelessApp) getApplicationContext(); String result = app.getUsername();//取值 text = (TextView) findViewById(R.id.txt_result); text.setText(result); } }
相关推荐
在Activity之间数据传递中还有一种比较实用的方式 就是全局对象 实用J2EE的读者来说都知道Java Web的四个作用域 这四个作用域从小到大分别是Page Request Session和Application 其中Application域在应用程序的任何...
总结来说,Eclipse V4.2.0作为Android开发的老牌工具,虽然目前已被Android Studio取代,但它仍然是学习和理解Android全局变量应用的良好平台。通过合理使用全局变量,开发者可以更高效地管理应用数据,但同时也需要...
在Android开发中,全局变量的使用常常是为了在不同的Activity之间共享数据。`Application`类是Android框架提供的一种机制,允许开发者创建一个与应用程序生命周期绑定的单例对象,从而实现全局变量的效果。本篇文章...
这是一个ppt文档,在里面详细的帮我们介绍了在Activity之间传递数据,通过全局变量传递数据。
总的来说,通过全局对象传递数据是Android应用开发中的一种常见做法,但需要谨慎使用,避免滥用可能导致的问题。合理地利用全局对象,可以提高代码的复用性和可维护性。在实际开发中,应根据具体需求选择最适合的...
4种最常用的Intent传递方式,这4种方式如下: 1、通过Intent传递数据 2、通过静态变量传递数据 3、通过剪切板传递数据 4、通过全局变量传递数据
Intent是Android系统中用于启动组件(如Activity)的一种消息对象,同时也可以用来在组件间传递数据。Intent的数据传递有两种类型:显式和隐式。 1. 显式Intent:通过指定目标Activity的类名,可以精确地启动某个...
在Android编程中,全局变量的使用常常涉及到应用的生命周期管理和数据持久化。本文将深入探讨在Android中如何正确地处理全局变量以及遇到的一些常见问题。 首先,全局变量通常用于在整个应用程序范围内共享数据。在...
3. **静态变量**:创建全局静态变量,可以方便地在PopupWindow和Activity之间共享数据。但是,这种方法不推荐在大型项目中使用,因为它可能导致数据同步问题和内存泄漏。 4. **BroadcastReceiver**:注册一个...
在Android开发中,全局变量的使用常常涉及到应用的多个组件之间数据共享,而Application类恰好提供了一个全局初始化和存储变量的平台。本文将详细讲解如何在Android中利用Application类设置全局变量并进行值传递。 ...
7. **静态变量与全局对象**: 虽然不推荐,但在某些情况下,可以使用静态变量或全局对象来间接传递数据。这种方法可能会导致数据泄露和难以调试的问题,因此应谨慎使用。 8. **事件总线**:对于更复杂的场景,如多个...
在Android应用开发中,Intent是传递数据非常常见的方式,它用于启动Activity、Service或BroadcastReceiver,并可以在它们之间传递数据。然而,当面临大量的数据需要在应用程序的不同组件间共享时,Intent可能就显得...
总结起来,Android开发中应谨慎使用全局变量,尽可能限制其作用范围,优先考虑局部变量和方法参数来传递数据。同时,结合使用ViewHolder和局部变量,优化Adapter的性能,避免因全局变量导致的问题。正确地管理和使用...
1.1 android系统介绍,1.2 android系统框架的介绍,1.3 如何搭建android开发环境,1.4 android生命周期的介绍,1.5 android使用全局变量传递数据,1.6 android使用剪切板传递数据,1.7 意图传递数据的第一种方式,...
相较于Activity,`Application`的生命周期更长,全局唯一,因此常被用于全局变量的存储和初始化工作。 1. 数据传递: - **静态成员变量**:可以在`Application`类中定义静态变量,这些变量在整个应用程序的生命...
要创建一个`AndroidViewModel`,你需要继承`AndroidViewModel`类,并传递`Application`实例到构造函数中。然后,你可以在`AndroidViewModel`的实例中存储和管理需要跨活动或Fragment共享的数据。 ```java public ...
1.5 android使用全局变量传递数据 1.6 android使用剪切板传递数据 1.7 意图传递数据的第一种方式 1.8 android使用静态变量传递数据 1.9 意图返回结果 二、Android常用布局介绍 2.1 android常用布局属性的介绍 2.2 ...
Intent是Android系统中用于启动另一个Activity或服务的类,它也可以用来传递数据。通过调用Intent的putExtra()方法,我们可以将各种类型的数据(如字符串、整数、布尔值等)添加到Intent中。例如: ```java Intent ...
4. **静态成员变量或Application对象**:虽然不推荐,但在某些场景下,如需要全局共享数据,可以考虑使用。 5. **使用ContentProvider**:对于大规模数据的跨应用传递,可以利用`ContentProvider`。 6. **使用...
综上所述,虽然静态变量在Java编程中提供了一种方便的共享数据的方式,但在Android开发中,由于其生命周期与进程紧密相关,使用时必须谨慎,以防止出现不可预测的行为和潜在的内存管理问题。合理地设计和使用静态...