在运行异步任务时禁用android中的home按钮

在运行异步任务时禁用android中的home按钮,android,Android,在运行由我创建的异步任务时,我需要禁用或停用android手机的home按钮。请查看我在中断异步任务时收到的错误日志 01-01 01:09:39.375: ERROR/WindowManager(1415): Activity com.android.settings.ThemePreview has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@418cb518 that was original

在运行由我创建的异步任务时,我需要禁用或停用android手机的home按钮。请查看我在中断异步任务时收到的错误日志

01-01 01:09:39.375: ERROR/WindowManager(1415): Activity  com.android.settings.ThemePreview has leaked window  com.android.internal.policy.impl.PhoneWindow$DecorView@418cb518 that was originally added here
01-01 01:09:39.375: ERROR/WindowManager(1415): android.view.WindowLeaked: Activity com.android.settings.ThemePreview has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@418cb518 that was originally added here
01-01 01:09:39.375: ERROR/WindowManager(1415):     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:350)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:245)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:193)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:118)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at android.view.Window$LocalWindowManager.addView(Window.java:537)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at android.app.Dialog.show(Dialog.java:279)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at com.android.settings.ThemePreview$ApplyTheme.onPreExecute(ThemePreview.java:357)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at android.os.AsyncTask.execute(AsyncTask.java:511)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at com.android.settings.ThemePreview.onOptionsItemSelected(ThemePreview.java:239)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at android.app.Activity.onMenuItemSelected(Activity.java:2502)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:961)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:490)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:103)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at android.view.View.performClick(View.java:3480)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at android.view.View$PerformClick.run(View.java:13993)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at android.os.Handler.handleCallback(Handler.java:605)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at android.os.Handler.dispatchMessage(Handler.java:92)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at android.os.Looper.loop(Looper.java:137)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at android.app.ActivityThread.main(ActivityThread.java:4368)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at java.lang.reflect.Method.invokeNative(Native Method)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at java.lang.reflect.Method.invoke(Method.java:511)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-01 01:09:39.375: ERROR/WindowManager(1415):     at dalvik.system.NativeStart.main(Native Method)
01-01 01:09:39.375:错误/WindowManager(1415):Activity com.android.settings.ThemePreview泄漏了window com.android.internal.policy.impl.PhoneWindow$DecorView@418cb518原来是加在这里的
01-01 01:09:39.375:错误/WindowManager(1415):android.view.WindowLeaked:Activity com.android.settings.ThemePreview已泄漏window com.android.internal.policy.impl.PhoneWindow$DecorView@418cb518原来是加在这里的
01-01:09:39.375:错误/WindowManager(1415):在android.view.ViewRootImpl。(ViewRootImpl.java:350)
01-01 01:09:39.375:错误/WindowManager(1415):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:245)上
01-01 01:09:39.375:错误/WindowManager(1415):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:193)上
01-01 01:09:39.375:错误/WindowManager(1415):在android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:118)
01-01 01:09:39.375:错误/WindowManager(1415):在android.view.Window$LocalWindowManager.addView(Window.java:537)
01-01 01:09:39.375:错误/WindowManager(1415):在android.app.Dialog.show(Dialog.java:279)上
01-01 01:09:39.375:错误/WindowManager(1415):位于com.android.settings.ThemePreview$ApplyTheme.onPreExecute(ThemePreview.java:357)
01-01 01:09:39.375:错误/WindowManager(1415):位于android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561)
01-01 01:09:39.375:错误/WindowManager(1415):在android.os.AsyncTask.execute(AsyncTask.java:511)
01-01 01:09:39.375:错误/WindowManager(1415):在com.android.settings.ThemePreview.OnOptions项Selected(ThemePreview.java:239)
01-01 01:09:39.375:错误/WindowManager(1415):在android.app.Activity.onMenuItemSelected处(Activity.java:2502)
01-01 01:09:39.375:错误/WindowManager(1415):位于com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:961)
01-01 01:09:39.375:错误/WindowManager(1415):位于com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
01-01 01:09:39.375:错误/WindowManager(1415):位于com.android.internal.view.menu.menuitemmpl.invoke(menuitemmpl.java:149)
01-01 01:09:39.375:错误/WindowManager(1415):位于com.android.internal.view.menu.MenuBuilder.performitemation(MenuBuilder.java:874)
01-01 01:09:39.375:错误/WindowManager(1415):位于com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:490)
01-01 01:09:39.375:错误/WindowManager(1415):位于com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:103)
01-01 01:09:39.375:错误/WindowManager(1415):在android.view.view.performClick(view.java:3480)上
01-01 01:09:39.375:错误/WindowManager(1415):在android.view.view$PerformClick.run(view.java:13993)
01-01 01:09:39.375:错误/WindowManager(1415):位于android.os.Handler.handleCallback(Handler.java:605)
01-01 01:09:39.375:错误/WindowManager(1415):位于android.os.Handler.dispatchMessage(Handler.java:92)
01-01:09:39.375:错误/WindowManager(1415):在android.os.Looper.loop(Looper.java:137)
01-01 01:09:39.375:错误/WindowManager(1415):位于android.app.ActivityThread.main(ActivityThread.java:4368)
01-01 01:09:39.375:错误/WindowManager(1415):位于java.lang.reflect.Method.Invokenactive(本机方法)
01-01:09:39.375:ERROR/WindowManager(1415):在java.lang.reflect.Method.invoke(Method.java:511)处
01-01 01:09:39.375:错误/WindowManager(1415):位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-01 01:09:39.375:错误/WindowManager(1415):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-01 01:09:39.375:错误/WindowManager(1415):位于dalvik.system.NativeStart.main(本机方法)

主页按钮无法禁用。android的安全原则的一部分是,用户应该能够最小化应用程序并随时进入主屏幕。它也很重要,因为Android支持多任务。你需要改变你的逻辑来适应它。就我个人而言,我不相信应用程序。它不允许我进入主屏幕并启动我选择的应用程序。

因此我们无法禁用“主页”按钮。
在Android SDK中,只要我们按HOME键,应用程序就会最小化并启动主屏幕。

因此,我们不能有任何与Home Key相关的事件。

在您的活动中使用以下覆盖方法:

@Override
public void onAttachedToWindow()
{  
       this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);     
       super.onAttachedToWindow();  
}

那听起来是个糟糕的主意。在某些情况下,更改菜单/后退/搜索按钮功能是有意义的,但不要干扰主页。许多恶意代码编写者也希望这样做。如果谷歌给你这种能力,他们也会得到。分享你为什么想要那种功能。应该有非常好的实践来优雅地处理类似的情况。这个应用程序是为了应用新的主题。在异步任务中,我将主题资源的图标存储到数据库中。如果用户按下中间的“主页”按钮,则任务不会完成,主题图标也不会改变。@帕鲁:正如萨瓦尔·埃尔凡所说,您需要编写代码,优雅地处理诸如用户按下“主页”按钮等中断。您还应该提供某种“进度”指示器,向用户显示正在发生的事情。通过这样做,如果用户认为发生了什么事情,那么他们希望能够减少回家的压力。另外,请记住,还有其他一些事情可能会中断您的活动,例如来电……您是否打算在任务完成时阻止来电?这不是很好的编码。您需要在这里处理onPause()和onResume()。签入onResume(),如果您有新的主题图标,然后应用它们,这也会破坏用户体验设计并让用户不安。你本质上是c