我们从一个启动服务的活动开始,然后变为空闲,直到服务再次调用该活动。活动进入onPause(我相信)并且直到它的BroadcastReceiver开始调用它才开始备份。我的服务创建一个WindowManager作为系统覆盖,当用户触发它时,它应该调用该活动并使活动创建一个包含其中一些内容的新视图。好吧,一切都顺利通过,没有错误弹出,我的所有日志都表明代码顺利运行,但应该制作的新视图永远不会出现。有趣的是,如果您单击该应用程序再次启动它,则会弹出我之前想要的视图。所以我很好奇为什么它不会发生在我想要的时候,但相反它仍然是看不见的。我已经尝试将视图设置为可见,尝试了bringToFront(),我甚至在意图上尝试了一些标志,将活动带到堆栈的顶部但没有一个工作。相关代码如下。
我不是在这里听到为什么你不认为我的应用程序对用户有好处,或者你认为它不符合orroids base“design”我只想帮助调试这个有趣的bug。
MainActivity
@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);
}
显示因为,因为
答案 0 :(得分:0)
尝试在figureOutParam("UPDATE",0);
之后插入super.onCreate(savedInstanceState);
。