我有以下适用于 Android 的场景:我有一个应用程序,在启动时会启动一个服务。该服务每 30 分钟检查一次 url。如果它收到特定响应,它会发送一个 Broadcast 应用接收并处理该响应。这种情况对我来说效果很好。
我还希望我的服务在用户停止运行应用程序(应用程序退出前台)后继续运行。我也可以正常工作。
我面临的问题是,当 Activity 收到 Broadcast 消息时,我无法让 Activity 移回前台。我尝试了各种 Intent 组合,但还没有弄明白。我做错了什么?
我的 BroadcastReceiver 代码如下所示:
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
launchApp();
}
};
private void launchApp() {
Intent vukaniActivity = new Intent(this, Vukani.class);
// I've tried multiple different flags to no avail.
vukaniActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(vukaniActivity);
}
最佳答案
你想要的标志是:
vukaniActivity.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
此外,请确保您在 UI 线程上运行。
runOnUiThread(new Runnable(){
@Override
public void run(){
launchApp();
}
});
关于android - 从广播接收器启动 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9386461/