1

我有一个显示应用程序状态的浮动图标的服务。但在某些时候,我想通过停止服务来隐藏浮动图标。所以我有一个广播来处理这个问题,但问题是我不能通过调用来停止服务context.stopService(new Intent(context, FloaticonService.class))

这是广播接收器FloaticonReceiver.java

public class FloaticonReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
            context.stopService(new Intent(context, FloaticonService.class));
    }
}

这是服务代码FloaticonService.java

public class FloaticonService extends Service {

    private WindowManager windowManager;
    private ImageView floatIcon;

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();

        windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

        floatIcon = new ImageView(this);
        floatIcon.setImageResource(R.drawable.ic_launcher);

        final WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT);

        params.gravity = Gravity.TOP | Gravity.LEFT;
        params.x = 0;
        params.y = 100;

        windowManager.addView(floatIcon, params);

    }

}
4

2 回答 2

1

试试这个

将此添加到您的FloaticonService课程中:

@Override
public void onDestroy() {
    super.onDestroy();
    windowManager.removeView(floatIcon);

}

希望能帮助到你。

于 2013-10-16T08:50:13.220 回答
0

我像这样使用它及其工作:

public class OnBootReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        final Intent mOnBootServiceIntent = new Intent(context, OnBootService.class);

        context.startService(OnBootServiceIntent);
     //or                        
        context.stopService(OnBootServiceIntent);

        Toast.makeText(context, "is active!", Toast.LENGTH_SHORT).show();
    }   
}
于 2013-10-16T09:10:38.283 回答