Application和Actovotu,Service同樣是android框架的一個系統組件,當android程序啓動時系統會建立一個 application對象,用來存儲系統的一些信息。一般咱們是不須要指定一個Application的,這時系統會自動幫咱們建立,若是須要建立本身 的Application,也很簡單建立一個類繼承 Application並在manifest的application標籤中進行註冊(只須要給Application標籤增長個name屬性把本身的 Application的名字定入便可)。
android系統會爲每一個程序運行時建立一個Application類的對象且僅建立一個,因此Application能夠說是單例 (singleton)模式的一個類.且application對象的生命週期是整個程序中最長的,它的生命週期就等於這個程序的生命週期。由於它是全局 的單例的,因此在不一樣的Activity,Service中得到的對象都是同一個對象。因此經過Application來進行一些,數據傳遞,數據共享 等,數據緩存等操做。java
具體的Application配置,前的文章中已經說明,這裏再也不累贅,拿乾貨android
import android.app.Application; import net.duohuo.dhroid.Const; import net.duohuo.dhroid.Dhroid; import org.apache.http.util.EncodingUtils; import org.json.JSONObject; import java.io.InputStream; /** * Author:JsonLu * DateTime:2015/8/31 09:13 * Email:luxd@i_link.cc */ public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); dhroidint();// 初始化dhroid參數 } // dhroidint開發框方法初始化 private void dhroidint() { Const.netadapter_page_no = "request.pageNum"; Const.netadapter_step = "request.pageSize"; Const.response_data = "page1"; Const.netadapter_step_default = 10; Const.netadapter_json_timeline = "pubdate"; Const.DATABASE_VERSION = 20; Const.net_pool_size = 30; Const.net_error_try = true; Dhroid.init(this); } //從assets中讀取文件 public JSONObject fileRead(String fileName) { JSONObject jsonObject; try { InputStream in = getResources().getAssets().open(fileName); int length = in.available(); byte[] buffer = new byte[length]; in.read(buffer); String res = EncodingUtils.getString(buffer, "UTF-8"); jsonObject = new JSONObject(res); return jsonObject; } catch (Exception e) { e.printStackTrace(); } return null; } }
從其餘的類體中調用該方法(MyApplication是一個單例)apache
//調用MyApplication中的fileRead()方法返回json對象 JSONObject data = ((MyApplication)getApplication()).fileRead("version.json");
另外在這裏稍微的絮叨一下,若是是Android Studio的環境多是沒有assets目錄的,在這裏的話就須要配置一下app目錄下的app.imljson
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
固然須要在app/src/main目錄下新建一個assets目錄緩存