任务栏一键删除 Recent APP

RecentApp

systemUI/src/com/android/systemui/recents/RecentsActivity.java


RecentsView.java就是显示的控件

/**Dismisses the focused task. */

publicvoiddismissFocusedTask(){

//Get the first stack view

intchildCount = getChildCount();

for(inti = 0; i < childCount; i++) {

Viewchild = getChildAt(i);

if(child != mSearchBar){

TaskStackViewstackView = (TaskStackView) child;

stackView.dismissFocusedTask();

break;

}

}

}

自己写的,结束所有任务。直接用TaskStack做,不要用它自带的dismissFocusedTask来做,会超时,如果在线程里做又不能操作UI。

这里循环要注意,不要用正常的循环,否则会数组越界。因为做了removeTask后,数组内容会减少,所有每次只删除头上的task

publicvoiddismissAllTask() {

Log.i("t","begin");

intnumStacks=mStacks.size();

Log.i("t","TaskStacksize "+numStacks);

for(inti = 0; i < numStacks; i++) {

TaskStacktaskStack=mStacks.get(i);

intnumStack=taskStack.getTaskCount();

Log.i("t","Tasksize "+numStack);

while(numStack>0){

Log.i("t","while===========");

//Ifdo removeTask(), the TaskStack will remove the task right

//now,so we must remove first task every time.

Taskt=taskStack.getTasks().get(0);

taskStack.removeTask(t);

numStack=taskStack.getTaskCount();

Log.i("t","Tasksize "+numStack);

Log.i("t","==============");

}



TaskStackView.java

/**Dismisses the focused task. */

publicvoiddismissFocusedTask(){

//Return early if there is no focused task index

if(mFocusedTaskIndex< 0) return;


Taskt = mStack.getTasks().get(mFocusedTaskIndex);

TaskViewtv = getChildViewForTask(t);

tv.dismissTask();

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中,Recent App 按钮是系统级别的按钮,通常不能完全禁用。但是,我们可以通过一些技巧来隐藏或者覆盖这个按钮。 下面是一种实现方法: 1. 创建一个透明的 Activity,覆盖在 Recent App 按钮上面,并且将其设置为全屏。 2. 在该 Activity 的 onCreate() 方法中,禁用 Recent App 按钮。具体实现代码如下: ``` @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 隐藏状态栏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 隐藏导航栏 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE); // 禁用 Recent App 按钮 try { Object service = getSystemService("statusbar"); Class<?> statusBarManager = Class.forName("android.app.StatusBarManager"); Method disableRecent = statusBarManager.getMethod("disable", int.class); disableRecent.invoke(service, DISABLE_RECENT); } catch (Exception e) { e.printStackTrace(); } } ``` 3. 将该 Activity 添加到 AndroidManifest.xml 文件中,并设置为启动 Activity。 ``` <activity android:name=".DisableRecentActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> ``` 4. 在该 Activity 的 onDestroy() 方法中,恢复 Recent App 按钮。具体实现代码如下: ``` @Override public void onDestroy() { super.onDestroy(); // 恢复 Recent App 按钮 try { Object service = getSystemService("statusbar"); Class<?> statusBarManager = Class.forName("android.app.StatusBarManager"); Method disableRecent = statusBarManager.getMethod("disable", int.class); disableRecent.invoke(service, ENABLE_RECENT); } catch (Exception e) { e.printStackTrace(); } } ``` 需要注意的是,这种方法只能隐藏或者覆盖 Recent App 按钮,并不能完全禁用它。同时,由于该方法需要创建一个透明的 Activity,可能会影响系统性能和用户体验。因此,我们建议在使用该方法时慎重考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值