Application和Actovotu,Service一樣是android框架的一個系統組件,當android程序啟動時系統會創建一個 application對象,用來存儲系統的一些信息。通常我們是不需要指定一個Application的,這時系統會自動幫我們創建,如果需要創建自己 的Application,也很簡單創建一個類繼承 Application並在manifest的application標簽中進行注冊(只需要給Application標簽增加個name屬性把自己的 Application的名字定入即可)。
android系統會為每個程序運行時創建一個Application類的對象且僅創建一個,所以Application可以說是單例 (singleton)模式的一個類.且application對象的生命周期是整個程序中最長的,它的生命周期就等於這個程序的生命周期。因為它是全局 的單例的,所以在不同的Activity,Service中獲得的對象都是同一個對象。所以通過Application來進行一些,數據傳遞,數據共享 等,數據緩存等操作。
具體的Application配置,前的文章中已經說明,這里不再累贅,拿干貨
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是一個單例)
//調用MyApplication中的fileRead()方法返回json對象 JSONObject data = ((MyApplication)getApplication()).fileRead("version.json");
另外在這里稍微的絮叨一下,如果是Android Studio的環境可能是沒有assets目錄的,在這里的話就需要配置一下app目錄下的app.iml
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
當然需要在app/src/main目錄下新建一個assets目錄