android-setComponentEnabledSetting导致异常,它可能会杀死当前应用程序?

我愿意通过以下代码从另一个活动中禁用一个活动,但这会导致问题:杀死当前应用程序.
   SDK版本为4.0.

 @Override
 public void onCreate(Bundle savedInstanceState) {  
     PackageManager pm = getPackageManager();

     pm.setComponentEnabledSetting(newComponentName(this,
                                    "com.xxx.launcher.desktop.testActivity"),
                                    PackageManager.COMPONENT_ENABLED_STATE_disABLED,   
                                    PackageManager.DONT_KILL_APP);

}

缺乏技巧吗?

解决方法:

你应该看看http://developer.android.com/reference/android/content/pm/PackageManager.html#DONT_KILL_APP

使用PackageManager.DONT_KILL_APP时必须格外小心,因为它可能导致不确定的行为.尤其是在活动试图禁用自身的情况下.如果您将另一个活动定位为目标,那应该没问题,但是我猜您要清除的活动位于

您对ComponentName的调用似乎不正确.
您可能要调用新的ComponentName(this.getApplicationContext(),testActivity.class).或者,您可以使用新的ComponentName(“ com.xxx.launcher.desktop”,“ com.xxx.launcher.desktop.testActivity”),其中第一个参数是AndroidManifest.xml文件中的包,第二个参数是完整的ComponentName的路径.请看以下SO问题,以获取有关设置ComponentName的信息:When to use which constructor for ComponentName in Android?,以获取更多信息.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...