android - 将 Android 应用程序从后台带到前台的方法

标签 android android-activity

场景如下:

AndroidManifest.xml 使用 android:launchMode="singleTask" 定义单个 Activity 。 (这意味着在整个应用程序生命周期中,堆栈中应该只有一个 Activity ,对吧?)

Activity.onCreate() 期间,广播接收器以编程方式创建并监听传入的 SMS。即使在 Activity.onPause() 设计 之后,接收器仍保持 Activity 状态。

当用户完成应用程序时,他按下设备主页按钮,调用 Activity.onPause(),应用程序消失。然后设备会显示 Android 主屏幕。

接收到 SMS 后,广播接收器接收 SMS 并尝试通过以下方式显示 Activity:

Intent it = new Intent(context, Akami.class);
it.setAction(Intent.ACTION_MAIN);
it.addCategory(Intent.CATEGORY_LAUNCHER);
it.setComponent(new ComponentName(context.getPackageName(), "MyActivity"));
it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(it);

但是,该 Activity 不会向用户显示。

  • a) 为什么?
  • b) 将 Activty 带到前台的可能方法有哪些?

最佳答案

MyMainActivity 定义 (AndroidManifest.xml) 中:

<intent-filter>
 <action android:name="intent.my.action" />
 <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

以编程方式将应用程序带到前台:

Intent it = new Intent("intent.my.action");
it.setComponent(new ComponentName(context.getPackageName(), MyMainActivity.class.getName()));
it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.getApplicationContext().startActivity(it);

注意:context.startActivity(it) 将在 context 对象与想要启动的 Activity 相同时不起作用。

关于android - 将 Android 应用程序从后台带到前台的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12838230/

相关文章:

android - 真的很困惑 setPreviewCallback 在 Android 中,需要建议

android - 什么类型的后台服务?

android - 在 OpenCV 中跟踪连续帧中的特征

android - java.lang.RuntimeException : setAudioSource failed 错误

android - Activity 自动滚动到中间

android - 如何确保当前在前台的任何应用程序 Activity 都能收到消息

android - GIF 图片加载缓慢问题

android - In-app billing的货币判断

android - 如何决定何时在单独的进程中运行不同的 android 应用程序组件

java - 如何向不是初始 fragment 的 fragment 启动新的 Activity ?