InitializeService.java
5.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package com.chudiangameplay.android.service;
import android.app.IntentService;
import android.app.Notification;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.StrictMode;
import com.chudiangameplay.android.CrashHandler;
import com.chudiangameplay.android.MyApplication;
import com.chudiangameplay.android.constant.SPConstants;
import com.chudiangameplay.android.manager.Config;
import com.chudiangameplay.android.tool.SPUtil;
import com.chudiangameplay.android.ui.view.imagepicker.CropImageView;
import com.chudiangameplay.android.ui.view.imagepicker.GlideImageLoader;
import com.chudiangameplay.android.ui.view.imagepicker.ImagePicker;
import com.chudiangameplay.android.util.Util;
import com.hyphenate.chat.EMClient;
import com.hyphenate.chat.EMOptions;
import com.tencent.bugly.crashreport.CrashReport;
import com.umeng.commonsdk.UMConfigure;
/**
* Created by zt on 2018/8/13.
* APP启动初始化操作,移动系统后台服务运行, 优化APP启动速度
*/
public class InitializeService extends IntentService {
private static final String ACTION_INIT_WHEN_APP_CREATE = "com.anly.githubapp.service.action.INIT";
public InitializeService() {
super("InitializeService");
}
@Override
public void onCreate() {
super.onCreate();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForeground(1, new Notification());
}
}
public static void start(Context context) {
Intent intent = new Intent(context, InitializeService.class);
intent.setAction(ACTION_INIT_WHEN_APP_CREATE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(intent);
} else {
context.startService(intent);
}
}
@Override
protected void onHandleIntent(Intent intent) {
if (intent != null) {
final String action = intent.getAction();
if (ACTION_INIT_WHEN_APP_CREATE.equals(action)) {
performInit();
}
}
}
//初始化操作
private void performInit() {
//严苛模式
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) {
builder.detectFileUriExposure();
}
//程序异常捕获类
// CrashHandler crashHandler = CrashHandler.getInstance();
// crashHandler.init(getApplicationContext()); //与bugly冲突,会导致bug不上报
//初始化友盟
if (Config.curVersion == Config.RELEASE) {
// UMConfigure.init(getApplicationContext(), "5c00c549f1f5566d2d00019a", "10000", UMConfigure.DEVICE_TYPE_PHONE, null);
UMConfigure.init(getApplicationContext(), null, null, UMConfigure.DEVICE_TYPE_PHONE, null);
}
//记录启动次数
int times = SPUtil.getIntValue(getApplicationContext(), SPConstants.LaunchTIMES, 0);
times++;
SPUtil.putValue(getApplicationContext(), SPConstants.LaunchTIMES, times);
//初始化IM
// initIM();
//初始化ImagePiker
initImagpiker();
//初始化Bugly
CrashReport.initCrashReport(getApplicationContext());
}
private void initIM() {
EMOptions options = new EMOptions();
// 默认添加好友时,是不需要验证的,改成需要验证
options.setAcceptInvitationAlways(false);
// 是否自动将消息附件上传到环信服务器,默认为True是使用环信服务器上传下载,如果设为 false,需要开发者自己处理附件消息的上传和下载
options.setAutoTransferMessageAttachments(true);
// 是否自动下载附件类消息的缩略图等,默认为 true 这里和上边这个参数相关联
options.setAutoDownloadThumbnail(true);
//初始化
EMClient.getInstance().init(getApplicationContext(), options);
//在做打包混淆时,关闭debug模式,避免消耗不必要的资源
EMClient.getInstance().setDebugMode(false);
}
private void initImagpiker() {
ImagePicker imagePicker = ImagePicker.getInstance();
imagePicker.setImageLoader(new GlideImageLoader()); //设置图片加载器
imagePicker.setShowCamera(true); //显示拍照按钮
imagePicker.setCrop(false); //允许裁剪(单选才有效)
imagePicker.setSaveRectangle(true); //是否按矩形区域保存
imagePicker.setSelectLimit(9); //选中数量限制
imagePicker.setStyle(CropImageView.Style.RECTANGLE); //裁剪框的形状
imagePicker.setFocusWidth(getResources().getDisplayMetrics().widthPixels); //裁剪框的宽度。单位像素(圆形自动取宽高最小值)
imagePicker.setFocusHeight(Util.dip2px(getApplicationContext(), 280)); //裁剪框的高度。单位像素(圆形自动取宽高最小值)
imagePicker.setOutPutX(getResources().getDisplayMetrics().widthPixels); //保存文件的宽度。单位像素
imagePicker.setOutPutY(Util.dip2px(getApplicationContext(), 280)); //保存文件的高度。单位像素
}
}