我正在研究的Android应用程序必须拥有一个GUI,并且即使在其所有活动被销毁或暂停或应用程序关闭时仍在后台继续工作。它应该在启动时自动启动。
我知道它必须是一项服务。但是服务没有GUI。 那么我如何交织 GUI和服务?
答案 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"/>
您可以随时随地启动此服务。它将在没有您的应用程序上下文的情况下运行。