zoukankan      html  css  js  c++  java
  • Android--通过Application传递数据

      在整个Android程序中,有时需要保存某些全局的数据(如:用户信息),方便在程序的任何地方调用。在Activity之间数据传递中有一种比较使用的方式,就是全局对象,使用过J2EE的都应该知道JavaWeb的四个作用域,其中Application域在应用程序的任何地方都可以使用和访问,除非是Web服务器停止,Android中的全局对象非常类似于JavaWeb中的Application域,除非是Android应用程序清除内存,否则全局对象将一直可以访问。

      在启动Application时,系统会创建一个PID,即进程ID,所有的Activity就会在此主进程上运行。所以,在同一Application中所有的Activity都可以通过Activity.getApplication()方法获取到同一个Application对象,继承Application类,即可访问自定义数据。

      简单来说,使用Application传递数据步骤如下:

    1. 创建新class,取名MyApp,继承android.app.Application父类,并在MyApp中定义需要保存的属性,如:用户名,用户类型。
    2. 在Activity中,通过Activity.getApplication()方法获取到MyApp对象(需要强制转换),对其数据进行操作。
    3. 修改AndroidManifest.xml文件中的application节点的android:name属性(android:name=".MyApp")。

    代码示例

    步骤一:

    public class MyApp extends Application {
    
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public void onCreate() {
            // TODO Auto-generated method stub
            super.onCreate();
            
            setName("Dick");
            
        }
    }

    步骤二:

    public class MainActivity extends Activity {
    
        private Button btn;
        private MyApp myApp;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            btn=(Button)this.findViewById(R.id.btn);
            
            btn.setOnClickListener(new View.OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    myApp=(MyApp)getApplication();
                    myApp.setName("jack");
                    Intent intent=new Intent(MainActivity.this, otherActivity.class);
                    startActivity(intent);
                    
                }
            });        
        }
    }


    步骤三:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="cn.bgxt.staticchuandi"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />
    
        <application
            android:name=".MyApp"
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="cn.bgxt.staticchuandi.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity android:name=".otherActivity"/>
        </application>
    
    </manifest>

     

  • 相关阅读:
    《激荡三十年》十七、国有企业改革(下)——“国退民进”
    《激荡三十年》十六、国有企业改革(中)——“抓大放小”
    《激荡三十年》十五、国有企业改革(上)——产权改革的曙光
    《激荡三十年》十四、改革深水区——整体配套体制改革
    《激荡三十年》十三、治国能臣——铁腕总理立威
    《激荡三十年》十二、中外合资——上海市长与上海大众
    《激荡三十年》十一、邓公南巡,中国再起航
    boost之thread
    七夕
    boost之mutex scoped_lock
  • 原文地址:https://www.cnblogs.com/plokmju/p/android_appliction.html
Copyright © 2011-2022 走看看