1

使用标志 FLAG_ACTIVITY_NEW_TASK 时,如果您现在正在启动的活动的任务已经在运行,我希望不启动一个新活动 - 相反,我希望将当前任务简单地带到它最后进入的屏幕前面.

  1. 我怎样才能从其他应用程序的服务中做到这一点?我想actvityManager.getRunningAppProcesses()通过服务启动应用程序。我只知道如何将这个应用程序作为一个新应用程序启动:

    Context context = this.getBaseContext();
    

    PackageManager pm = context.getPackageManager(); 意图意图 = pm.getLaunchIntentForPackage(LevelappPackageName); context.startActivity(intent);

但我想以这种方式执行它:

    context.startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
  1. 我知道如何确定我的应用程序是否正在运行:

    ActivityManager actvityManager = (ActivityManager) this.getSystemService( ACTIVITY_SERVICE );
    List<RunningAppProcessInfo> App = actvityManager.getRunningAppProcesses();
    for(int i = 0; i < App.size(); i++)
        {   
            if(App.get(i).processName.equals("myapp"))
    

    但是我怎么知道某个应用程序当前是否正在运行——它现在在屏幕上?!

4

1 回答 1

0

您需要将一个添加到您希望启动intent-filter action的清单中。Activity您还需要一个PendingIntent正确的action,您可以从Service. 您可能还需要查看清单launchMode=singleTop和/或Context.startActivityIfNeeded.

如果一个Activity有焦点,它的onWindowFocusChanged方法将被调用。使用它来设置您可以读取的变量。

于 2012-05-06T20:53:59.757 回答