獲取到上下文getApplication
阿新 • • 發佈:2019-01-10
首先需要再Manifist.xml檔案中配置一個android:name給取了名稱以後獲取上下文可以生效
android:theme="@style/AppTheme" android:name="BaseApplication"
Manifist.xml程式碼如下
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ldw.marketm"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" android:name="BaseApplication"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".PersonActivity"></activity> <activity android:name=".DetailActivity"></activity> <activity android:name=".FindDetailActivity"></activity> <activity android:name=".RecomendDetailAppActivity"></activity> </application> </manifest>
BaseApplication.java獲取到上下文物件
package com.ldw.marketm; import android.app.Application; import android.content.Context; import android.os.Handler; /** * Created by ldw on 2018/5/10. * 代表當前應用程式,獲取上下文,需要在清單檔案中配置 */ public class BaseApplication extends Application{ private static BaseApplication application; private static int mainTid; private static Handler handler; @Override public void onCreate(){ super.onCreate(); application = this; mainTid = android.os.Process.myTid(); handler=new Handler(); } public static Context getApplication(){ return application; } public static int getMainTid() { return mainTid; } public static Handler getHandler() { return handler; } }
建立一個工具類UiUtils.java作為中介來獲取到上下文
package com.ldw.marketm.Utils; import android.content.Context; import android.content.res.Resources; import android.graphics.drawable.Drawable; import com.ldw.marketm.BaseApplication; /** * Created by ldw on 2018/5/10. */ public class UiUtils { //獲取到上下文 protected static Resources getResource(){ return BaseApplication.getApplication().getResources(); } public static String[] getStringArray(int tabNames){ return getResource().getStringArray(tabNames); } public static Context getContext(){ return BaseApplication.getApplication(); } //把Runnable 方法提交到主執行緒執行 public static void runOnUiThread(Runnable runnable){ // 在主執行緒執行 if(android.os.Process.myTid()== BaseApplication.getMainTid()){ runnable.run(); }else{ //獲取主執行緒的handler BaseApplication.getHandler().post(runnable); } } public static Drawable getDrawalbe(int id) { return getResource().getDrawable(id); } //延遲time時間執行task public static void postDelayed(Runnable run, int time) { // 獲取到主執行緒的handler BaseApplication.getHandler().postDelayed(run, time);//呼叫runnable中的run方法 } //取消一個任務 public static void cancel(Runnable run) { // 獲取到主執行緒的handler BaseApplication.getHandler().removeCallbacks(run); } /** dip轉換px */ public static int dip2px(int dip) { final float scale = getResource().getDisplayMetrics().density; return (int) (dip * scale + 0.5f); } /** pxz轉換dip */ public static int px2dip(int px) { final float scale = getResource().getDisplayMetrics().density; return (int) (px / scale + 0.5f); } //獲取到res/values/demons.xml的配置引數 public static int getDimens(int homePictureHeight) { return (int) getResource().getDimension(homePictureHeight); } }