Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用GUI创建服务?_Android - Fatal编程技术网

Android 如何使用GUI创建服务?

Android 如何使用GUI创建服务?,android,Android,我正在使用的android应用程序必须有一个GUI,并且即使在其所有活动被破坏或暂停或应用程序关闭时,也必须在后台继续工作。它应该在开机时自动启动 我知道这是一种服务。但是服务没有GUI。 因此,如何将GUI和服务结合起来?实现这一点的方法之一是使用android的WindowManager类,您可以根据需要为其设置不同的属性。下面是一个具有GUI的服务示例 公共类MyService扩展服务{ TextView xTextView; ImageView xImageView; View layo

我正在使用的android应用程序必须有一个GUI,并且即使在其所有活动被破坏或暂停或应用程序关闭时,也必须在后台继续工作。它应该在开机时自动启动

我知道这是一种服务。但是服务没有GUI。
因此,如何将GUI和服务结合起来?

实现这一点的方法之一是使用android的WindowManager类,您可以根据需要为其设置不同的属性。下面是一个具有GUI的服务示例

公共类MyService扩展服务{

TextView xTextView;
ImageView xImageView;
View layout;
WindowManager windowManager;
@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}
@Override
public void onCreate() {
    // TODO Auto-generated method stub

    super.onCreate();
    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.WRAP_CONTENT,
            WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
            PixelFormat.TRANSLUCENT);
    params.gravity = Gravity.CENTER | Gravity.TOP;
    params.setTitle("Load Average");

    windowManager = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
    LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    layout= inflater.inflate(R.layout.layout1, null);

    xImageView= (ImageView) layout.findViewById(R.id.xImage);
    xTextView= (TextView) layout.findViewById(R.id.xTextView);

    xImageView.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
    });

    // Add layout to window manager
    windowManager.addView(layout, params);

    layout.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub
        }
    });
}
}

您必须添加此权限才能使用Windowmanager布局

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

您可以在任何地方启动此服务。它将在没有应用程序上下文的情况下运行