2

我需要从后台服务重新启动我的主要活动。
我通过 BroadcastReceiver 获得了我的服务结果,我需要恢复它(经过一些操作)。

可能吗 ?
我怎样才能做到这一点 ?

我尝试了此解决方案从通知中恢复应用程序和堆栈,但它对我不起作用。

编辑:
那是我的接收器:

private BroadcastReceiver receiver = new BroadcastReceiver() {


        @Override
        public void onReceive(Context context, Intent intent) {
          Bundle bundle = intent.getExtras();
          if (bundle != null) {
            int resultCode = bundle.getInt(DownloadService.RESULT);
            if (resultCode == RESULT_OK) {
                Log.i("MyApp", "RESULT OK");
                final Intent mainIntent = new Intent(context, MainActivity.class);
                mainIntent.setAction(Intent.ACTION_MAIN);
                mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
                startActivity(mainIntent);
            } else {
              Toast.makeText(MainActivity.this, "KO",Toast.LENGTH_LONG).show();
            }
          }
        }

 };
4

2 回答 2

6
Intent intent = new Intent(context.getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
context.getApplicationContext().startActivity(intent);
于 2014-12-03T12:40:32.320 回答
3

您必须将此标志与您的 Intent 一起使用:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

如果您不想要 Activity 的新实例,请在 AndroidManifest 文件中为您的 Activity 设置 launchMode:

android:launchMode="singleTask"
于 2014-12-11T12:36:20.537 回答