MyApplication+UIUtils

**

MyApplication+UIUtils

**
俗话说得好,工欲善其技,必先利其器,我们在开发一个程序之前也是一样。如果想在开发的过程中没那么辛苦的话,前期的准备工作一定要做足。做过程序的都知道,我们在开发之前都会封装一些强大的基类和帮助类,以便在开发时可以得闲应手,这篇文章主要是把我做的前一个项目的MyApplication+BaseActivity+UIUtils类拿出来和大家分享一下。

1.MyApplication
MyApplication因为是在程序的一开始就会执行的,所以我们会在它 的oncreat()方法里面做一些初始化的工作,很多的第三方类库的使用也需要在程序开始的时候初始化,所以在这些工作在里面去做就肯定不会错。不说了,上代码。

public class MyApplication extends Application {

    private static Context mContext;
    private static Handler mHandler;
    private static long mMainThreadId;
    private ArrayList<FragmentActivity> activities;
    private MyApplication mApplication;
    private static boolean firstTimeDistination = true;
    String member_id;

    /**
     * 得到上下文
     */
    public static Context getContext() {
        return mContext;
    }

    /**
     * 得到主线程的handler
     */
    public static Handler getHandler() {
        return mHandler;
    }

    /**
     * 得到主线程的id
     */
    public static long getMainThreadId() {
        return mMainThreadId;
    }

    public static boolean getFirstTimeDistination() {
        return firstTimeDistination;
    }

//    public static int getStatusHeight(){
//        return mStatusHeight;
//    }

    @Override
    public void onCreate() {//程序的入口方法


        //获取状态栏高度
        //mStatusHeight = getStatusHeight((Activity) mContext);

        //1.上下文
        mContext = getApplicationContext();

        //2.得到主线程的handler
        mHandler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
            }
        };

        //3.得到主线程的id
        mMainThreadId = android.os.Process.myTid();
        /**
         Tid: Thread
         Uid:User
         Pid:Process
         */
        super.onCreate();

        activities = new ArrayList<FragmentActivity>();
        mApplication = this;
    }

    public MyApplication getApplication() {
        return mApplication;
    }

    /**
     * 把所有页面添加到统一列表管理
     *
     * @param instance
     */
    public void addInstance(FragmentActivity instance) {
        activities.add(instance);
    }

    /**
     * 关闭所有页面
     *
     * @param instance activity实例对象
     */
    public void removeInstance(FragmentActivity instance) {
        activities.remove(instance);
    }

    /**
     * 退出   关闭所有页面并杀死所有线程,一般是在程序双击退出的时候用
     */
    public void exit() {
        try {
            for (FragmentActivity activity : activities) {
                if (activity != null) {
                    activity.finish();
                }
            }
        } catch (Exception e) {

        } finally {
            android.os.Process.killProcess(Process.myPid());
            System.exit(0);
        }
    }
}

说明:
因为addInstance()和removeInstance()是每一个Activity都要执行的操作,所以我们会在BaseActivity中执行这两个操作,瞬间觉得代码简洁多了。

2.UIUtils
UIUtils 相信这个谁都写过了吧,废话不多说,直接上代码。
public class UIUtils {
private static String member_id;

/**
 * 得到上下文
 */
public static Context getContext() {
    return MyApplication.getContext();
}

/**
 * 得到Resource对象
 */
public static Resources getResources() {
    return getContext().getResources();
}

/**
 * 得到String.xml中的字符
 */
public static String getString(int resId) {
    return getResources().getString(resId);
}

/**
 * 得到String.xml中的字符数组
 */
public static String[] getStrings(int resId) {
    return getResources().getStringArray(resId);
}

/**
 * 得到color.xml中的颜色信息
 */
public static int getColor(int resId) {
    return getResources().getColor(resId);
}

/**
 * 得到应用程序的包名
 *
 * @return
 */
public static String getPackageName() {
    return getContext().getPackageName();
}

/**
 * 得到主线程的线程id
 *
 * @return
 */
public static long getMainThreadId() {
    return MyApplication.getMainThreadId();
}

/**
 * 得到主线程的Handler对象
 */
public static Handler getMainThreadHandler() {
    return MyApplication.getHandler();
}

/**
 * 安全的执行一个任务
 * 1.当前任务所在线程子线程-->使用消息机制发送到主线程执行
 * 2.当前任务所在线程主线程-->直接执行
 */
public static void postTask(Runnable task) {
    //得到当前线程的线程id
    long curThreadId = android.os.Process.myTid();
    long mainThreadId = getMainThreadId();
    if (curThreadId == mainThreadId) {//主线程
        task.run();
    } else {//子线程
        getMainThreadHandler().post(task);
    }
}

/**
 * 判断一个服务是否开启
 * @param mContext 上下文
 * @param serviceName 服务名,包名.服务类名
 * @return 是否开启
 */
public static boolean isServiceWork(Context mContext, String serviceName) {
    boolean isWork = false;
    ActivityManager activityManager = (ActivityManager) mContext
            .getSystemService(Context.ACTIVITY_SERVICE);
    List<ActivityManager.RunningServiceInfo> myList = activityManager.getRunningServices(Integer.MAX_VALUE);
    if (myList.size() <= 0) {
        return false;
    }
    for (int i = 0; i < myList.size(); i++) {
        String mName = myList.get(i).service.getClassName().toString();
        if (mName.equals(serviceName)) {
            isWork = true;
            break;
        }
    }
    return isWork;
}

// ///通过布局文件加载布局对象///
public static View inflate(int layoutId) {
    return View.inflate(getContext(), layoutId, null);
}

public static float dp2px( float dp) {
    final float scale = getContext().getResources().getDisplayMetrics().density;
    return (int)(dp * scale + 0.5f);
}

public static float sp2px(float sp) {
    final float scale = getContext().getResources().getDisplayMetrics().scaledDensity;
    return sp * scale;
}

public static int getScreenWidth() {
    WindowManager windowManager = (WindowManager) getContext().getSystemService(Context
            .WINDOW_SERVICE);
    int screenWidth = windowManager.getDefaultDisplay().getWidth();
    return screenWidth;
}


public static int getScreenHeight() {
    WindowManager windowManager = (WindowManager) getContext().getSystemService(Context
            .WINDOW_SERVICE);
    int screenHight = windowManager.getDefaultDisplay().getHeight();
    return screenHight;
}

//获取会话token
public static Map<String, String> getHeaderMap() {
    Map<String, String> headerMap = new HashMap<>();
    String token = BaseRequestUtil.getToken(getContext());
    headerMap.put(BaseRequestUtil.REQUEST_TOKEN_PARAMS, token);
    String imei = DeviceUtils.getIMEI(getContext());
    headerMap.put(BaseRequestUtil.REQUEST_DEVICE_ID, imei);
    String sessionid = BaseRequestUtil.getSessionid();
    if (!sessionid.equals("")) {
        headerMap.put(BaseRequestUtil.REQUEST_SESSION_ID, sessionid);
    }
    return headerMap;
}

//将hashMap转为字符串
public static String convertRequest(Map<String, String> valueMap) {
    String jsonString;
    try {
        JSONObject json = new JSONObject();

        for (String key : valueMap.keySet()) {
            json.put(key, valueMap.get(key));
        }

        jsonString = json.toString().trim();
        LogUtils.d("jsonString是:" + jsonString);
    } catch (JSONException e) {
        e.printStackTrace();
        jsonString = "";
    }
    return jsonString;
}

}

好了,这次就讲到这里,希望对你有用,转载请说明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值