在MainActivity中,点击按钮,开启service
activity_main.xml文件中
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="300dp"
android:layout_height="360dp">
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_centerInParent="true"
android:layout_height="match_parent"
android:text="startservice" />
</RelativeLayout>
在MainActcivity中
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,MyService.class);
startService(intent);
finish();
}
});
}
}
在MyService中
public class MyService extends Service {
private WindowManager windowManager;
private WindowManager.LayoutParams params;
private View view;
private Button btn;
private boolean isViewGroup;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
setParmas();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
isViewGroup = true;
if (isViewGroup) {
view = View.inflate(this, R.layout.activity_main, null);
btn = (Button) view.findViewById(R.id.btn);
windowManager.addView(view, params);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("service", "setOnClickListener");
windowManager.removeView(view);
}
});
//点击返回键,退出窗体,但是此方法不执行,不知道为什么?希望有大神看到能回一个
// view.setOnKeyListener(new View.OnKeyListener() {
// @Override
// public boolean onKey(View v, int keyCode, KeyEvent event) {
// if (keyCode == KeyEvent.KEYCODE_BACK) {
// windowManager.removeView(view);
// }
// Log.e("setOnKeyListener", "setOnKeyListener");
// return true;
// }
// });
}else {
final View v = new View(this);
v.setBackgroundResource(R.mipmap.ic_launcher);
windowManager.addView(v, params);
//点击返回键,可以退出窗体
v.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
windowManager.removeView(t);
Log.e("setOnKeyListener", "setOnKeyListener---------");
}
return true;
}
});
}
return super.onStartCommand(intent, flags, startId);
}
private void setParmas() {
windowManager = (WindowManager) getApplication().getSystemService(getApplication().WINDOW_SERVICE);
params = new WindowManager.LayoutParams();
params.format = PixelFormat.RGBA_8888;
params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
params.gravity = Gravity.CENTER;
params.width = 300;
params.height = 300;
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
权限
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>