Windows 관리자를 사용하여 경고보기를 표시하므로보기의 인스턴스를 추가로 유지해야합니다.
창을보기에 추가하는 서비스를 만듭니다. 따라서 서비스가 삭제되면 창에서보기를 제거 할 수 있습니다.
여기
public class FloatingService extends Service {
private WindowManager windowManager;
private View floatingView;
WindowManager.LayoutParams params;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flag, int startId)
{
// add window
showAlert();
return START_STICKY;
}
private void showAlert() {
if(windowManager == null || floatingView == null) {
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
floatingView = View.inflate(getBaseContext(),R.layout.floating_layout,null);
// do your stuff to update the view in layout
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.CENTER | Gravity.CENTER;
windowManager.addView(floatingView, params);
}
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onDestroy() {
super.onDestroy();
if (floatingView != null) windowManager.removeView(floatingView);
}
가 완벽하게 일했다 .. 샘플 코드입니다, 감사합니다! – Rombus
롤리팝을 사용하지 않습니다. –