Android 的Application(可在不同的類中進行資料的操作)

來源:互聯網
上載者:User

有時候我們需要在Activity之外的類中修改Activity中的資料或是UI, 或者是要在自訂的類中要修改其它類中的值。這時候就變的很麻煩!這時候我們就需要一個全域的容器,來存放要共用的資料,就像J2EE中的Session。 當然,Android設計者肯定也考慮到了這一點。進入正題-----> Application(註: 本節只簡單介紹一下使用方法,相信天才的碼農們舉一反三)

使用方法:

第一、實現自己的Applicaiton

public class ApplicationContext extends Application {      public static final int FLUSH_MAIN_ACTIVITY=1;      private Handler main;         public void setMainHandler(Handler handler){          main=handler;      }            public void flushMain(){        main.sendEmptyMessage(FLUSH_MAIN_ACTIVITY);      }    } 

第二、在Activity中定義Handler  ,並註冊Handler

package com.sequel.text;import android.app.Activity;import android.app.Application;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Message;public class MainActivity extends Activity {private int count = 0;/** Called when the activity is first created. *///定義Handler,  Handler flushHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case ApplicationContext.FLUSH_MAIN_ACTIVITY://在這可進行想要的操作operat();break;default:break;}super.handleMessage(msg);}};private ApplicationContext appC;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);appC = (ApplicationContext) getApplication();//註冊HandlerappC.setMainHandler(flushHandler);try {Thread.sleep(2000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}startActivity(new Intent(MainActivity.this,SecondActivity.class));//啟動另一個Activity}public void operat(){//.....System.out.println(count++);}}

第三、調用方法----在SecondActivity中進行操作

import android.app.Activity;import android.app.Application;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class SecondActivity extends Activity {/** Called when the activity is first created.*/private ApplicationContext appC;private Button button;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.second);button = (Button) findViewById(R.id.requestButton);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//這就是調用方法appC.flushMain();}});appC = (ApplicationContext) getApplication();}}

第四、千萬不要以為這就完事大吉了! 一定要在AndroidManifest.xml中註冊你自己定義的Application

<application android:icon="@drawable/icon" android:label="@string/app_name" android:name=".ApplicationContext">

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.