如何将背景任务带到蜂窝下方的正面?

时间:2012-07-06 05:49:26

标签: android task

在我的应用程序根活动中,我有一个自定义标签栏,包含三个标签,可在使用ViewFlipper实现的三个屏幕之间切换。

我现在要做的是给每个屏幕它自己的活动堆栈,制作 标签栏可用于我的所有活动,并在按下标签时在不同的堆栈之间切换。

就像蜂窝上的魅力一样,我在ActivityMaganger类中提供了bringTaskToFront()。

我尝试了很多解决方案,例如:

  • 重新启动特定任务的顶级活动,希望任务将移至前面
  • 以某种方式获得蜂窝课程

那么,任何想法?

非常感谢,

斯文

2 个答案:

答案 0 :(得分:1)

在honey和up版本中,您可以像这样使用MoveTaskToFront

//Bring Task to front with Android >= Honeycomb
if (Build.VERSION.SDK_INT >= 11) {
    ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);
    List<RunningTaskInfo> rt = am.getRunningTasks(Integer.MAX_VALUE);

    for (int i = 0; i < rt.size(); i++) 
    {
           // bring to front
           if (rt.get(i).baseActivity.toShortString().indexOf("yourproject") > -1) {                     
              am.moveTaskToFront(rt.get(i).id, ActivityManager.MOVE_TASK_WITH_HOME);
           }
    }
}

确保您的Project Compiles with Android v.11或更高版本,以确保此行不会因编译而中断:

am.moveTaskToFront(rt.get(i).id, ActivityManager.MOVE_TASK_WITH_HOME);

对于较旧的Android版本,您可以使用以下方法将任务移到前面:

Intent intent = new Intent(this, YourClass.class);//The class you want to show
startActivity(intent);

在android清单中添加以下内容

<!--The versions with which to compile-->
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="11"/>

<!--The Activity you wish to bring forward-->
<activity android:name="YourClass" android:taskAffinity="" android:launchMode="singleTask" />

<!--User Permissions-->
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.REORDER_TASKS" />

最后,确保当您通过覆盖onBackPressed()不要使用 moveTaskToBack()将任务推回时,这将导致您的任务无法完成对用户可见。而是使用以下内容:这将模拟主页按钮按下,这将有效地隐藏您的应用程序并显示主屏幕

@Override
public void onBackPressed() {
    Utils.showToast(this, "Your application is running in the background");
    /*Simulate Home Button Press*/
    Intent startMain = new Intent(Intent.ACTION_MAIN);
    startMain.addCategory(Intent.CATEGORY_HOME);
    startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(startMain);
}

你去了,我希望这对你有用,并帮助一些人解决这个问题。

答案 1 :(得分:0)

这适用于我在Honeycomb上下的Android版本。键是intent flags

onItemClickedListener