編輯:關於Android編程
Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents
是一個用來訪問全局信息的接口(圖片資源、信息資源),一些比較常用的組件繼承Context接口。
和Activity,Service一樣是android框架的一個系統組件,當android程序啟動時系統會創建一個 application對象,用來存儲系統的一些信息。通常我們是不需要指定一個Application的,這時系統會自動幫我們創建,如果需要創建自己 的Application,也很簡單創建一個類繼承 Application並在manifest的application標簽中進行注冊(只需要給Application標簽增加個name屬性把自己的 Application的名字定入即可)。
android系統會為每個程序運行時創建一個Application類的對象且僅創建一個,所以Application可以說是單例 (singleton)模式的一個類.且application對象的生命周期是整個程序中最長的,它的生命周期就等於這個程序的生命周期。因為它是全局 的單例的,所以在不同的Activity,Service中獲得的對象都是同一個對象。所以通過Application來進行一些,數據傳遞,數據共享 等,數據緩存等操作。
下面我們通過一個實例,來實現Application的數據共享。
1、我們創建一個對象,繼承Application
package com.example.learncontext;
import android.app.Application;
public class App extends Application {
private String name = "default";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2、我們需要配置AndroidManifest.xml
代碼中的12行,這裡我們需要配置上我們創建Application對象的路徑。
代碼17到35行,我們可以看出配置2個activity,並且都是入口程序,詳見intent-filter中的代碼。目的是為了在手機上展示2個應用入口圖標,便於測試Application的數據共享。
3、下面是2個Activity的VIEW視圖,每個VIEW頁面增加1個textview、1個editview、1個button
4、下面是2個activity中的代碼
package com.example.learncontext;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class BMainActivity extends Activity {
private TextView textView;
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bmain);
textView = (TextView) findViewById(R.id.textView1);
editText = (EditText) findViewById(R.id.editText1);
textView.setText("獲取到的共享數據是:"
+ ((App) getApplicationContext()).getName());
findViewById(R.id.button1).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
((App) getApplicationContext()).setName(editText
.getText().toString());
textView.setText("獲取到的共享數據是:"
+ ((App) getApplicationContext()).getName());
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.bmain, menu);
return true;
}
}
package com.example.learncontext;
import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView textView;
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView1);
editText = (EditText) findViewById(R.id.editText1);
textView.setText("獲取到的共享數據是:"
+ ((App) getApplicationContext()).getName());
findViewById(R.id.button1).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
((App) getApplicationContext()).setName(editText
.getText().toString());
textView.setText("獲取到的共享數據是:"
+ ((App) getApplicationContext()).getName());
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
程序中30行代碼,((App) getApplicationContext()),強轉成App對象,然後獲取對象中的屬性,通過put或get方法達到數據共享的存儲和讀取操作。
5、測試圖如下
1、volley項目地址 https://github.com/smanikandan14/Volley-demo(1) JSON,圖像等的異步下載;(2) 網絡請求的排
在Android中,除了我們之前說過的sharedpreference可以用來保存數據之外,SQLiteDatabase應該是使用得最廣泛的一種數據保存方式。 SQLit
運行結果:模擬器圖庫就三張 沒辦法~畫質挺感人~一個隱式意圖布局文件:<relativelayout xmlns:android="http://sche
Android NougatAndroid 7.0 經過5個開發者預覽版本的改善,終於在8.22日正式推送,並確定版本名為Nougat(牛軋糖)根據官方的介紹,Andro