如何开启和关闭开机自启动
public abstract void?setComponentEnabledSetting?(ComponentName?componentName, int newState, int flags)
?
這個(gè)函數(shù)的英文注釋是,Set the enabled setting for a package component (activity, receiver, service, provider). This setting will override any enabled state which may have been set by the component in its manifest.
為什么要關(guān)閉組件??
在用到組件時(shí),有時(shí)候我們可能暫時(shí)性的不使用組件,但又不想把組件kill掉,比如創(chuàng)建了一個(gè)broadcastReceiver廣播監(jiān)聽器,用來(lái)想監(jiān)聽第一次開機(jī)啟動(dòng)后獲得系統(tǒng)的許多相關(guān)信息,并保存在文件中,這樣以后每次開機(jī)啟動(dòng)就不需要再去啟動(dòng)該服務(wù)了,也就是說(shuō)如果沒(méi)有把receiver關(guān)閉掉,就算是不做數(shù)據(jù)處理,但程序卻還一直在后臺(tái)運(yùn)行會(huì)消耗電量和內(nèi)存,這時(shí)候就需要把這個(gè)receiver給關(guān)閉掉。?
如何關(guān)閉組件??
關(guān)閉組件其實(shí)并不難,只要?jiǎng)?chuàng)建packageManager對(duì)象和ComponentName對(duì)象,并調(diào)用packageManager對(duì)象的setComponentEnabledSetting方法。
componentName:組件名稱?
newState:組件新的狀態(tài),可以設(shè)置三個(gè)值,分別是如下:?
不可用狀態(tài):COMPONENT_ENABLED_STATE_DISABLED?
可用狀態(tài):COMPONENT_ENABLED_STATE_ENABLED?
默認(rèn)狀態(tài):COMPONENT_ENABLED_STATE_DEFAULT?
flags:行為標(biāo)簽,值可以是DONT_KILL_APP或者0。 0說(shuō)明殺死包含該組件的app
?
final ComponentName receiver = new ComponentName(context, ToggleReceiver.class);?
?final PackageManager pm = context.getPackageManager();?
?count++;?
?if (count > 1) {?
?pm.setComponentEnabledSetting(receiver,PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP); }
?
如果設(shè)置一個(gè)app的mainActivity為COMPONENT_ENABLED_STATE_DISABLED狀態(tài)
則不會(huì)再launcher的程序圖標(biāo)中發(fā)現(xiàn)該app
調(diào)用app的setComponentEnabledSetting改變了/data/system/packages.xml 文件中
?
?
<package name="你的app的包名"?
<enabled-components>
<item name="包名.xxActivity" />
</enabled-components>
</package>
轉(zhuǎn)載于:https://www.cnblogs.com/ihsan-gaozp/p/3277673.html
總結(jié)
以上是生活随笔為你收集整理的如何开启和关闭开机自启动的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 向app store提交应用时,必须点“
- 下一篇: 激活网卡