如何使用GUI创建服务?

时间:2015-10-25 12:03:15

标签: android

我正在研究的Android应用程序必须拥有一个GUI,并且即使在其所有活动被销毁或暂停或应用程序关闭时仍在后台继续工作。它应该在启动时自动启动。

我知道它必须是一项服务。但是服务没有GUI。 那么我如何交织 GUI和服务?

1 个答案:

答案 0 :(得分:1)

执行此操作的方法之一可能是使用android的WindowManager类,您可以根据需要为其设置不同的属性。以下是具有GUI的服务示例。

公共类MyService扩展了Service {

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 Layout。

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

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