android - Chathead 的后台服务在小米 MI4I android 中不起作用

标签 android service background-service

你好,我无法理解为什么我的聊天头图像只在小米设备上不显示在屏幕上

它在除小米 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;
}

而且我在 list 文件中添加了

<!-- Check In Service -->
        <service android:name=".CheckInService" 
            android:exported="true">
        </service>

你能告诉我为什么服务在小米 MI4I 中不起作用

最佳答案

小米在其安全应用程序下提供了“自动启动”选项。您必须手动将此选项切换为开。除非这样做,否则如果您的应用被终止,您的应用将无法执行任何后台任务,并且您将无法执行简单的后台操作,例如获取推送通知、更新位置等。此选项使服务能够在万一情况下重新启动他们在后台被杀死。

关于android - Chathead 的后台服务在小米 MI4I android 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33752192/

相关文章:

java - 如何在没有root的情况下访问Android应用程序上的数据库

android - 使用 adb 从损坏的 android 设备中回收传感器

java - 将大量 double 值从 Servlet 发送到 JSP

java - 蓝牙适配器服务仍为空

Android 后台服务类 "onStartCommand"方法在设备启动时不执行其中的所有代码

android - 如何在 flutter 的后台运行时钟计时器?

android - 将字符串从对话框 fragment 返回到 Activity

java - Android - 将 RxJava 与 Retrofit 一起使用会导致 IllegalArgumentException

Android 服务意外关闭

android - API 级别 26 中的 android 后台服务超时