1. 程式人生 > >獲取到上下文getApplication

獲取到上下文getApplication

首先需要再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);
    }
}