0

我们从一个启动服务的活动开始,然后变得空闲,直到服务再次调用该活动。该活动进入onPause(我相信)并且在其BroadcastReceiver得到它的启动调用之前不会启动备份。我的服务创建一个 WindowManager 作为系统覆盖,当用户触发它时,它应该调用活动并使活动创建一个包含一些内容的新视图。好吧,一切都顺利进行,没有弹出错误,我所有的日志都表明代码运行顺利,但是应该制作的新视图永远不会出现。不过有趣的是,如果您单击该应用程序再次启动它,则会弹出我之前想要的视图。所以我很好奇为什么它没有在我想要的时候发生,而是它仍然是不可见的。我尝试将视图设置为可见,尝试了bringToFront(),我什至尝试了一些标志来将活动带到堆栈的顶部,但这些都不起作用。相关代码如下。

我不是来听你为什么不认为我的应用程序对用户有好处,或者你不认为它遵循 android 的基本“设计”的原因,我只是想帮助调试这个有趣的错误。

主要活动

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = new Intent(MainActivity.this, MyService.class);
        startService(intent); //if i comment out these lines and add the call
        initService(); //to figureOutParam below it works perfectly
        sendUserHome(); //this one as well
        figureOutParam("UPDATE",0); //this is the call that i use to get through to
                         //the method though right now neither param is important
    }


    public void figureOutParam(String param, int top){

        if(param.equals("UPDATE")){

            View myView = new View(this);

            LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
            myView = inflater.inflate(R.layout.activity_main, null);
            myView.setBackgroundColor(Color.BLUE);
            myView.bringToFront();

            setContentView(myView);
        }
    }

MyService(仅涉及回调服务的重要部分)

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

        WindowManager window = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
        Display d = window.getDefaultDisplay();
        int width=d.getWidth();
        int height=d.getHeight();
        height= (int)(height*.025);


        params = new WindowManager.LayoutParams(WindowManager.LayoutParams.FILL_PARENT,height,
                WindowManager.LayoutParams.TYPE_PHONE,
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL|
                WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | 
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
                PixelFormat.TRANSLUCENT);
        params.gravity=Gravity.BOTTOM;
    wm = (WindowManager) getSystemService(WINDOW_SERVICE);

    }

    public void updateView(String params){
            Intent i = new Intent(MY_INTENT);
            i.putExtra("y", this.y);
            i.putExtra("param", params);
            sendBroadcast(i);
        }

表明因为,好吧,因为

4

1 回答 1

0

尝试figureOutParam("UPDATE",0);super.onCreate(savedInstanceState);.

于 2013-10-07T05:17:19.610 回答