![](/img/trans.png)
[英]Service android can't start again in certain device (e.g xiaomi mi4i) when close in recent apps
[英]Background service for Chathead is not Working in Xiaomi MI4I android
你好,我無法理解為什么我的聊天圖像只顯示在小米設備上的屏幕上
它在所有設備中都運行得非常好小米MI4這里是我的服務
public class CheckInService extends Service {
private int x_init_cord, y_init_cord, x_init_margin, y_init_margin;
private WindowManager windowManager;
private ImageView chatHead;
WindowManager.LayoutParams params;
boolean mHasDoubleClicked = false;
long lastPressTime;
private Boolean _enable = true;
@Override
public void onCreate() {
super.onCreate();
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
Display display = windowManager.getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Log.e("hiet", ""+height);
chatHead = new ImageView(this);
chatHead.setImageResource(R.drawable.face1);
final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.BOTTOM | Gravity.RIGHT;
params.x = 10;
params.y = 25;
windowManager.addView(chatHead, params);
/*try {
chatHead.setOnTouchListener(new View.OnTouchListener() {
private WindowManager.LayoutParams paramsF = params;
private int initialX;
private int initialY;
private float initialTouchX;
private float initialTouchY;
@Override public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// Get current time in nano seconds.
long pressTime = System.currentTimeMillis();
// If double click...
if (pressTime - lastPressTime <= 300) {
mHasDoubleClicked = true;
}
else { // If not double click....
mHasDoubleClicked = false;
}
lastPressTime = pressTime;
initialX = paramsF.x;
initialY = paramsF.y;
initialTouchX = event.getRawX();
initialTouchY = event.getRawY();
break;
case MotionEvent.ACTION_UP:
break;
case MotionEvent.ACTION_MOVE:
paramsF.x = initialX + (int) (event.getRawX() - initialTouchX);
paramsF.y = initialY + (int) (event.getRawY() - initialTouchY);
windowManager.updateViewLayout(chatHead, paramsF);
break;
}
return false;
}
});
} catch (Exception e) {
// TODO: handle exception
}*/
chatHead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Log.e("Clickr", "Clickr");
// Intent intent = new Intent(getApplicationContext(), MainActivity.class);
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
// getApplicationContext().startActivity(intent);
}
});
}
private void chathead_click(){
Log.e("Clickr", "Clickr");
}
@Override
public void onDestroy() {
super.onDestroy();
if (chatHead != null)
windowManager.removeView(chatHead);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
try {
} catch (Exception e) {
e.printStackTrace();
}
return super.START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
我已經在Manifest文件中添加了
<!-- Check In Service -->
<service android:name=".CheckInService"
android:exported="true">
</service>
你能告訴我為什么服務不起作用在小米MI4I
小米在其安全應用程序下提供“自動啟動”選項。 您必須手動將此選項切換為ON。 除非這樣做,否則您的應用程序將無法執行任何后台任務,如果它被殺死,您將無法執行簡單的后台操作,如獲取推送通知,更新位置等。此選項可以重新啟動服務以防萬一他們在后台被殺。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.