Android使用Application的好處

來源:互聯網
上載者:User

標籤:.text   需要   override   rri   over   ret   資料   prot   函數   

如果一個應用程式有2個入口的,1個入口程式開啟修改其中的內容,怎麼實現另一個入口的資料也修改呢?

下面就用到Application來實現資料的共用,因為一個應用程式只有一個Application,Application還有一個更重要的功能就是資料的初始化

Application的oncreate的函數比activity的函數早執行

 public void onCreate() {        super.onCreate();        System.out.println("App oncreate");    }

下面來看一下如何?2個應用程式直接的資料共用:

首先MainActivity,把MainActivity的xml檔案修改為main1.xml

然後建立第二個Activity,命名為Main2,

然後是布局,main1.xml和main2.xml的布局一樣

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textAppearance="?android:attr/textAppearanceLarge"        android:text="Large Text"        android:id="@+id/textView" />    <EditText        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/editText" />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="儲存"        android:id="@+id/btsave" /></LinearLayout>

然後建立一個java檔案,命名為App,繼承自Application

public class App extends Application {    private String textData="default";    public String getTextData() {        return textData;    }    public void setTextData(String textData) {        this.textData = textData;    }    //application的oncreate的函數比activity的函數早執行    @Override    public void onCreate() {        super.onCreate();        System.out.println("App oncreate");    }    @Override    public void onTerminate() {        super.onTerminate();    }    @Override    public void onLowMemory() {        super.onLowMemory();    }    //記憶體清理的時候    @Override    public void onTrimMemory(int level) {        super.onTrimMemory(level);    }}

 

這裡需要注意的一點就是我們需要把這個App類註冊到AndroidManifest中,只用這樣我們才能夠實現資料的共用:AndroidManifest中的內容如下:

 

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.yb.DataStorage">    <application        android:name="com.example.yb.DataStorage.App"        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">      <!--  //會在介面上呈現2個表徵圖,都是程式的入口-->        <activity            android:name="com.example.yb.DataStorage.MainActivity"            android:label="Main1">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity            android:name="com.example.yb.DataStorage.Main2"            android:label="Main2">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity android:name=".ServiceActivity"></activity>    </application></manifest>

這個應用程式中,會有2個入口。因為我們在2個activity中,我們都註冊了相同的內容:

<intent-filter>       <action android:name="android.intent.action.MAIN" />       <category android:name="android.intent.category.LAUNCHER" /> </intent-filter>

 

下面是MainActivity的,main2和MainActivity一樣,只要改下 setContentView(R.layout.main1);

public class MainActivity extends AppCompatActivity {    private TextView tv;    private EditText ed;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        System.out.println("Main1 oncreate");        setContentView(R.layout.main1);        tv= (TextView) findViewById(R.id.textView);        ed= (EditText) findViewById(R.id.editText);        tv.setText("共用的資料是:"+getApp().getTextData());        findViewById(R.id.btsave).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                ((App)getApplicationContext()).setTextData(ed.getText().toString());                tv.setText("共用的資料是:"+ed.getText().toString());            }        });    }    public App getApp(){        return (App) getApplicationContext();    }}

 

這樣就實了2個入口的程式資料共用,~~

 

Android使用Application的好處

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.