我有一项必须启动某项活动的服务。我创建了一个BroadcastReceiver,它通过以下代码调用Activity(它不是主要活动):
Intent intent = new Intent(context, DataActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
Log.w("DEBUG","Activity started. Context: "+context.getClass().toString());
context.startActivity(intent);
我也在清单中设置:
android:launchMode="singleTop"
我在手机的菜单中等待活动显示。没啥事儿。当我更改为我的应用时,活动变得可见并且恢复。这是一个问题,我必须在BroadcastReceiver启动时立即显示活动。
知道该尝试什么?
答案 0 :(得分:0)
发送广播很弱。
活动必须从服务内部 直接 启动。
而不是:
Intent broadcastIntent = new Intent();
broadcastIntent.setAction(DataBroadcastReceiver.ACTION_RESP);
broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT);
sendBroadcast(broadcastIntent);
在服务中使用此功能:
Intent intent = new Intent(getApplicationContext(), DataActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(intent);