每个进程开启走Application中的onCreate方法,保证一切进程在主线程中初始化,判断是否为主线程的方法如下:`public class HuaqianApplication extends Application {
public static HuaqianApplication app;
@Override
public void onCreate() {
super.onCreate();
if (quickStart()) {
return;
}
if (isMainProcess()) {
//初始化操作
}
}
public boolean quickStart() {
if (StringUtil.contains(getCurProcessName(this), ":mini")) {
return true;
}
return false;
}
private boolean isMainProcess() {
ActivityManager am = ((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE));
List<RunningAppProcessInfo> processInfos = am.getRunningAppProcesses();
String mainProcessName = getPackageName();
int myPid = Process.myPid();
for (RunningAppProcessInfo info : processInfos) {
if (info.pid == myPid && mainProcessName.equals(info.processName)) {
return true;
}
}
return false;
}
}
import java.text.NumberFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import android.text.Html;
import android.text.Spanned;
import android.text.TextUtils;
public class StringUtil {
// email
private final static Pattern emailer = Pattern.compile("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
// phone
private final static Pattern phoner = Pattern.compile("[1]\\d{10}");
// alipay name
private final static Pattern alipayName = Pattern.compile("^[\\u4e00-\\u9fa5]+$");
/**
* if string is empty
*
* @param input
* @return boolean
*/
public static boolean isEmpty(String input) {
if (input == null || "".equals(input))
return true;
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (c != ' ' && c != '\t' && c != '\r' && c != '\n') {
return false;
}
}
return true;
}
/**
* if email is valid
*
* @param email
* @return
*/
public static boolean isEmail(String email) {
if (email == null || email.trim().length() == 0)
return false;
return emailer.matcher(email).matches();
}
public static boolean isAlipayName(String name) {
if (isEmpty(name)) {
return false;
}
return alipayName.matcher(name).matches();
}
/**
* 半角转换为全角
*
* @param input
* @return
*/
public static String toDBC(String input) {
char[] c = input.toCharArray();
for (int i = 0; i < c.length; i++) {
if (c[i] == 12288) {
c[i] = (char) 32;
continue;
}
if (c[i] > 65280 && c[i] < 65375)
c[i] = (char) (c[i] - 65248);
}
return new String(c);
}
/**
* encrypt phone number
*
* @param phone
* @return
*/
public static String encryptPhoneNumber(String phone) {
if (phone == null) {
return "*****";
}
if (phone.length() < 11) {
return phone;
}
return phone.substring(0, 3) + "*****" + phone.substring(8, 11);
}
/**
* convert user credit log's address
*
* @param address
* @return
*/
public static String convertUserDeliveryAddress(String address) {
String[] info = address.split("#");
StringBuffer text = new StringBuffer();
text.append(info[1]) // province
.append(info[2]) // city
.append(info[3]) // zone
.append(info[4]) // street
.append("\n").append(info[0]) // name
.append(" ").append(info[6]) // phone
;
return text.toString();
}
public static boolean contains(String targetStr, String subStr) {
if (isEmpty(targetStr) || isEmpty(subStr)) {
return false;
}
return targetStr.contains(subStr);
}
public static String creditFormat(String creditStr) {
StringBuffer buffer = new StringBuffer();
if (creditStr.contains(".")) {
int a = creditStr.indexOf(".");
String string1 = creditStr.substring(0, a);
String string2 = creditStr.substring(a + 1, creditStr.length());
if (string2.length() == 1) {
string2 = string2 + "0";
} else {
string2 = string2.substring(0, 2);
}
buffer = buffer.append(string1).append(".").append(string2);
} else {
buffer = buffer.append(creditStr).append(".00");
}
return buffer.toString();
}
public static String creditFormat(String creditStr, int floatDigit) {
StringBuffer buffer = new StringBuffer();
if (creditStr.contains(".")) {
int a = creditStr.indexOf(".");
String string1 = creditStr.substring(0, a);
String string2 = creditStr.substring(a + 1, creditStr.length());
for (int i = string2.length(); i < floatDigit; i++) {
string2 = string2 + "0";
}
string2 = string2.substring(0, floatDigit);
buffer = buffer.append(string1).append(".").append(string2);
} else {
buffer.append(creditStr).append(".");
for (int i = 0; i < floatDigit; i++) {
buffer = buffer.append("0");
}
}
return buffer.toString();
}
public static String creFormat(String creditStr) {
StringBuffer buffer = new StringBuffer();
if (creditStr.contains(".")) {
int a = creditStr.indexOf(".");
String string1 = creditStr.substring(0, a);
String string2 = creditStr.substring(a + 1, creditStr.length());
if (string2.length() == 1) {
string2 = string2 + "0";
} else {
string2 = string2.substring(0, 2);
}
if (Integer.parseInt(string2) > 0) {
buffer = buffer.append(string1).append(".").append(string2);
} else {
buffer = buffer.append(string1);
}
} else {
buffer = buffer.append(creditStr).append("");
}
return buffer.toString();
}
public static boolean isPhoneNum(String phoneNum) {
if (phoneNum == null || phoneNum.trim().length() == 0)
return false;
return phoner.matcher(phoneNum).matches();
}
public static boolean isMobileNO(String mobiles) {
boolean flag = false;
try {
mobiles = mobiles.replace(" ", "");
mobiles = mobiles.replace("+86", "");
Pattern p = Pattern.compile("^((1[0-9]))\\d{9}$");
Matcher m = p.matcher(mobiles);
flag = m.matches();
} catch (Exception e) {
flag = false;
}
return flag;
}
public static String currencyFormat(int credit) {
NumberFormat nf = NumberFormat.getInstance();
return StringUtil.creditFormat(nf.format(credit / 100.00f));
}
public static String currencyFormat(int credit, int floatDigit) {
NumberFormat nf = NumberFormat.getInstance();
return StringUtil.creditFormat(nf.format(credit / 100.00f), floatDigit);
}
public static String curFormat(int credit) {
NumberFormat nf = NumberFormat.getInstance();
return StringUtil.creFormat(nf.format(credit));
}
public static String specialLettersFilter(String str) throws PatternSyntaxException {
String regEx = "[/\\!@#¥……~·——+{}:“’《》?/。,‘;】【=-·~&*()*?<>|\"\n\t`~!@#$%^&*()-_=+{\\[\\]}:;,.]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();
}
public static boolean isValidStr(String str) {
if (isEmpty(str)) {
return true;
}
byte[] nameBytes = str.getBytes();
for (int i = 0; i < nameBytes.length; i += 3) {
if ((nameBytes[i] & 0xF8) == 0xF0) {
return false;
}
}
return true;
}
public static String replace(int from, int to, String source, String element) {
if (source == null || from == -1 || to == -1)
return null;
String tmp = source.substring(from, to);
source = source.replace(tmp, element);
return source;
}
// public static SpannableStringBuilder colorPartiallyString1(String
// content, String colorString, int color) {
// SpannableStringBuilder style = new SpannableStringBuilder(content);
// int start = content.indexOf(colorString);
// int end = start + colorString.length();
// style.setSpan(new ForegroundColorSpan(color), start, end,
// Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
// return style;
// }
public static Spanned colorPartiallyString(String content, String colorString, int color) {
int start = content.indexOf(colorString);
int end = start + colorString.length();
String result = "";
if (start >= 0) {
if (start > 0) {
result += content.substring(0, start);
}
String colorStr = Integer.toHexString(color);
if (colorStr.length() > 6) {
colorStr = colorStr.substring(2);
}
result += "<font color='#" + colorStr + "'>" + content.substring(start, end) + "</font>";
if (end < content.length()) {
result += content.substring(end);
}
return Html.fromHtml(result);
} else {
return Html.fromHtml(content);
}
}
public static String dateToString(Date currentTime, String format) {
SimpleDateFormat formatter = new SimpleDateFormat(format);
String dateString = formatter.format(currentTime);
return dateString;
}
public static Date stringToDate(String strDate, String format) {
SimpleDateFormat formatter = new SimpleDateFormat(format);
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatter.parse(strDate, pos);
return strtodate;
}
public static boolean equals(String left, String right) {
if (!StringUtil.isEmpty(left)) {
return left.equals(right);
} else if (!StringUtil.isEmpty(right)) {
return false;
}
return true;
}
public static String addSplitEveryChar(String content, String splite) {
if (TextUtils.isEmpty(content)) {
return content;
}
StringBuilder desBuilder = new StringBuilder();
char[] contentChars = content.toCharArray();
for (int i = 0; i < contentChars.length; i++) {
desBuilder.append(contentChars[i]);
desBuilder.append(splite);
}
return desBuilder.substring(0, desBuilder.length() - 1).toString();
}
public static String insertSpacingToString(String content, int smallNum) {
if (TextUtils.isEmpty(content)) {
return content;
}
StringBuilder dividerBuilder = new StringBuilder();
for (int j = 0; j <= 2 * smallNum; j++) {
if (j == smallNum) {
dividerBuilder.append(" ");
} else if (j < smallNum) {
dividerBuilder.append("<small>");
} else {
dividerBuilder.append("</small>");
}
}
String dividerStr = dividerBuilder.toString();
StringBuilder contentBuilder = new StringBuilder();
char[] contentChars = content.toCharArray();
for (int i = 0; i < contentChars.length; i++) {
contentBuilder.append(contentChars[i]);
if (i < contentChars.length - 1) {
contentBuilder.append(dividerStr);
}
}
return contentBuilder.toString();
}
public static String formatNoDigitIfCan(int credit) {
String formatCredit = currencyFormat(credit);
if (formatCredit.endsWith(".00")) {
return formatCredit.substring(0, formatCredit.length() - 3);
}
return formatCredit;
}
}