編輯:關於Android編程
在android應用開發中,重寫Application也算是比較常見的,以前開發的一些程序太過於簡單,都不要重寫這個類,但是在真正的商業開發中,重寫Application類幾乎是必做的。
為什麼要重寫Application?
1.處理全局變量,在整個應用程序范圍內共享數據
2.管理Activity,當應用程序退出時,銷毀所有的Activity
3.初始化應用程序的配置信息
4.當系統內存不足時應用能夠做出合理的響應
…..
繼承了Application之後,一定要在清單文件中聲明,即指明Application節點的name屬性即可:
重寫的Application類:
/**
* 注意,在重寫方法時必須調用超類的事件處理程序
* @author 王松
* @date 2015年7月30日
*/
public class MyApplication extends Application {
private String globalVar;
private MyApplication instance;
private List activities;
/**
* 單例模式
* @return
*/
public MyApplication getInstance(){
if(instance == null)
return new MyApplication();
return instance;
}
/**
* 添加activity
* @param a
*/
public void addActivity(Activity a){
activities.add(a);
}
/**
* 遍歷所有Activity並finish
*/
public void finishActivity() {
for (Activity activity : activities) {
if (activity != null && !activity.isFinishing()) {
activity.finish();
}
}
}
public String getGlobalVar() {
return globalVar;
}
public void setGlobalVar(String globalVar) {
this.globalVar = globalVar;
}
/**
* 在創建應用程序時調用,可以重寫這個方法來實例化應用程序單態,以及創建和實例化任何應用
* 程序狀態變量或共享資源
*/
@Override
public void onCreate() {
super.onCreate();
activities = new LinkedList();
}
/**
* 作為onLowMemory的一個特定於應用程序的替代選擇,在android4.0時引入,
* 在程序運行時決定當前應用程序應該嘗試減少其內存開銷時(通常在它進入後台時)調用
* 它包含一個level參數,用於提供請求的上下文
*/
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
}
/**
* 與Activity不同,在配置改變時,應用程序對象不會被終止和重啟。
* 如果應用程序使用的值依賴於特定的配置,則重寫這個方法來重新加載這些值,或者在應用程序級別處理這些值的改變
*/
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
/**
* 當系統處於資源匮乏時,具有良好行為的應用程序可以釋放額外的內存。
* 這個方法一般只會在後台進程已經終止,但是前台應用程序仍然缺少內存時調用。
* 我們可以重寫這個程序來清空緩存或者釋放不必要的資源
*/
@Override
public void onLowMemory() {
super.onLowMemory();
}
}
關鍵地方都已用注釋說明。
那麼怎麼在Activity中使用這個類呢?
MyApplication mp = (MyApplication) getApplication();
mp.setGlobalVar(張三);
就是這麼簡單,不過大多情況下我們都會用Map來存儲全局變量,這裡為了簡單,就直接使用了String。
最近項目需要用到涉及數據庫SQLite的知識,真正用的時候才發現自己一點都不熟悉。所以打算將其使用方法總結一下,方便自己以後復習。SQLiteDatabaseSQLite
在現有的技術條件下,內存永遠都是一個吃緊的資源,不用說是PC上會出現內存不足的可能,更不必說在移動設備上了。一旦出現內存不足就會導致系統卡頓,影響用戶體驗。而
之前寫過一些關於TCP和UDP數據傳輸的代碼,比如使用TCP傳輸音視頻數據包,P2P打洞中使用UDP等。寫好之後就直接丟下了,沒有總結下都。最近准備找工作,再拿來溫習下。
由於Linux系統的權限限制和Android封裝架構限制,很多涉及底層設備、接口、驅動控制的應用開發,不得不使用到本文的NDK開發環境(基於Android源碼或內核源碼修