如何从概览屏幕中删除活动?

时间:2016-06-23 09:24:37

标签: java android

我在最后几天搜索

如何从最近列表中删除活动(也称为概览屏幕,最近的应用列表..等)

这是我的 android 清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.abc.visibility">
 <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:noHistory="true"
            android:taskAffinity=""
            android:excludeFromRecents="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

这是我的 MainActivity

的JavaCode
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    protected void onResume() {super.onResume();}
    public void onWindowFocusChanged(boolean hasFocus) {if (!hasFocus) {clearTask();}}
    void clearTask(){if(android.os.Build.VERSION.SDK_INT >= 21){finishAndRemoveTask();} else{finish();}}
    @Override
    public void onBackPressed() {super.onBackPressed();}

}

所以,我的问题很简单......

如何从最近的列表中删除我的活动

在我的案例中: 只有一项活动

  1. 活动需要开始。
  2. 用户点击“最近”按钮(Android 标准按钮)
  3. 需要完成,不需要在最近的列表中显示
  4. 我只需要这么多。

    如果你真的知道该怎么做,请帮助我。

3 个答案:

答案 0 :(得分:0)

如果我理解并且您想要在按主页按钮或任何按钮时从最近使用的应用列表中删除您的应用,那么您可以查看answer

答案 1 :(得分:0)

Manifest.xml中使用此android:autoRemoveFromRecents="true"

      <activity
            android:name=".MainActivity"
            android:autoRemoveFromRecents="true">

在活动中将您的代码更改为此格式。

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

      if(android.os.Build.VERSION.SDK_INT >= 21)
       {
        finishAndRemoveTask();
       }         
      else
        {
         finish();
        }
     }


 public static void exitApplication(Context context)
    {
        Intent intent = new Intent(context, MainActivity.class);

        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

        context.startActivity(intent);

    }

}

当os版本为Api Level&lt; 21然后使用此代码关闭它。

MainActivity.exitApplication(context);

希望这会对你有所帮助。

答案 2 :(得分:0)

使用AppTask类删除任务

 public void onRemoveFromRecents(View view) {

finishAndRemoveTask();

}

保留已完成的任务

如果要在概览屏幕中保留任务,即使其活动已完成,也要在启动活动的Intent的addFlags()方法中传递FLAG_ACTIVITY_RETAIN_IN_RECENTS标志。

 private Intent newDocumentIntent() {

       final Intent newDocumentIntent = new Intent(this,        NewDocumentActivity.class);

newDocumentIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT 

  android.content.Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS);

newDocumentIntent.putExtra(KEY_EXTRA_NEW_DOCUMENT_COUNTER, 

incrementAndGet());

return newDocumentIntent;

}

这是Android docs的链接,这是你要求的here

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

        TypedValue typedValue = new TypedValue();
        Resources.Theme theme = getTheme();
        theme.resolveAttribute(R.attr.colorPrimary, typedValue, true);
        int primaryColor = typedValue.data;

        Bitmap iconBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_activity_welcome);
        ActivityManager.TaskDescription td = new ActivityManager.TaskDescription(null, iconBitmap, primaryColor);

        setTaskDescription(td);
        iconBitmap.recycle();
    }