Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android弹出式活动,位于任何其他应用程序之上_Java_Android_Android Layout - Fatal编程技术网

Java Android弹出式活动,位于任何其他应用程序之上

Java Android弹出式活动,位于任何其他应用程序之上,java,android,android-layout,Java,Android,Android Layout,我想创建一个弹出式应用程序 我在后台有一个服务-队列中有东西到达,我希望开始一个活动来通知用户-非常类似于SMSPopup应用程序的功能 因此,我有一个代码,其中有东西到达队列,它调用我的活动 然而,由于某些原因,该活动总是显示在最初启动的活动之上,而不是仅仅出现在android设备的主桌面上 例如: 我有应用程序运行时显示的主要活动 我有检查队列的服务 我有一个弹出式活动 当我启动主活动时,它会启动服务-我现在可以关闭它 然后,我在队列上有一些东西,它创建了弹出式活动,启动主活动,并在其顶部弹

我想创建一个弹出式应用程序

我在后台有一个服务-队列中有东西到达,我希望开始一个活动来通知用户-非常类似于SMSPopup应用程序的功能

因此,我有一个代码,其中有东西到达队列,它调用我的活动

然而,由于某些原因,该活动总是显示在最初启动的活动之上,而不是仅仅出现在android设备的主桌面上

例如:

我有应用程序运行时显示的主要活动

我有检查队列的服务

我有一个弹出式活动

当我启动主活动时,它会启动服务-我现在可以关闭它

然后,我在队列上有一些东西,它创建了弹出式活动,启动主活动,并在其顶部弹出:我如何停止此操作,并使其按照我想要的方式运行

弹出类是:




public class SMSPopup extends Activity implements OnClickListener{

 public static String msg;


 @Override
 public void onCreate(Bundle bundle){
  super.onCreate(bundle);
 // Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
  this.setContentView(R.layout.popup);
  TextView tv = (TextView)findViewById(R.id.txtLbl);
  Intent intent = getIntent();
  if (intent != null){
      Bundle bb = intent.getExtras();
      if (bb != null){
          msg = bb.getString("com.andy.tabletsms.message");
      }
  }

  if(msg == null){
   msg = "LOLOLOL";
  }
  tv.setText(msg);

  Button b = (Button)findViewById(R.id.closeBtn);
  b.setOnClickListener(this);
 }


 @Override
 public void onClick(View v) {
  this.finish();
 }
}




我从广播接收器调用该活动,该接收器大约每30秒检查一次队列:


  if(main.msgs.size()>0){

      Intent testActivityIntent = new Intent(context.getApplicationContext(), com.andy.tabletsms.work.SMSPopup.class);
    testActivityIntent.putExtra("com.andy.tabletsms.message", main.msgs.get(0));
    testActivityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(testActivityIntent);

      }

布局如下:

这与Android建议的设计实践背道而驰。看

后台服务应该永远不要自己启动活动以接收用户交互


您可以在祝酒词和/或通知中显示此消息。从通知中,您可以开始一个新的意图

这与Android建议的设计实践背道而驰。看

后台服务应该永远不要自己启动活动以接收用户交互


您可以在祝酒词和/或通知中显示此消息。从通知中,您可以开始一个新的意图

什么是“main”(如main.msgs.get(0))以及它在哪里?它是一个包含字符串的arraylist。。。。与问题无关:)所以你说-“…启动主要活动,并在其顶部弹出窗口”。主要活动“真的”启动了吗?换句话说,当您按下后退按钮时,弹出活动消失,您可以看到后面的主要活动。或者,弹出式活动的背景与主活动的标题栏相同,使其看起来像主活动?什么是“main”(如main.msgs.get(0))以及它在哪里?它是一个包含字符串的arraylist。。。。与问题无关:)所以你说-“…启动主要活动,并在其顶部弹出窗口”。主要活动“真的”启动了吗?换句话说,当您按下后退按钮时,弹出活动消失,您可以看到后面的主要活动。或者,弹出式活动的背景与主活动的标题栏相同,使其看起来像主活动?很多应用程序都会这样做——这是我希望应用程序使用的通知类型——仅供我自己使用——所以这取决于我!当我说“服务”时,它不是ok定义的服务。我明白了。我想你有一根线。您希望线程即使在活动不在最前线时也能运行。正确的?如果这是正确的,我想如果你能做到这一点。我建议当用户单击某个按钮/操作时,将控件转移到服务(真正的服务…而不是线程)。当服务需要弹出窗口时,您可以创建通知和/或toast。也。。(如果你真的愿意的话)你可以在同一个地方开始一项活动(即使这违反了安卓的建议)。不管怎样,我仍然需要回答我的问题!我的活动开始了,但在后台有原始活动,这不是我需要/想要的,即使我是通过通知完成的,然后他们单击它,它就会打开-我仍然希望它在UI的前台打开,而不需要任何后台面板或其他活动。很多应用程序都会这样做-这就是我想要的通知类型对于我的应用程序-它只供我自己使用-所以它由我决定!当我说“服务”时,它不是ok定义的服务。我明白了。我想你有一根线。您希望线程即使在活动不在最前线时也能运行。正确的?如果这是正确的,我想如果你能做到这一点。我建议当用户单击某个按钮/操作时,将控件转移到服务(真正的服务…而不是线程)。当服务需要弹出窗口时,您可以创建通知和/或toast。也。。(如果你真的愿意的话)你可以在同一个地方开始一项活动(即使这违反了安卓的建议)。不管怎样,我仍然需要回答我的问题!我的活动开始了,但在后台有原始活动,这不是我需要/想要的,即使我是通过通知完成的,然后他们单击它,它就会打开,我仍然希望它在UI的前台打开,而不需要任何后台面板或其他活动。