a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 系統(tǒng) > Android > 正文

Android中程序的停止狀態(tài)詳細介紹

2020-04-11 11:41:04
字體:
供稿:網(wǎng)友

很多人遇到過廣播收不到的問題,比如Google Play推廣安裝廣播沒有收到等,諸如這些問題,又都是什么原因呢,這篇文章將進行回答.

從Android 3.1(HoneyComb) 也就是API 12開始,Android引入了一套新的啟動控制,這就是程序的停止狀態(tài).那讓我們看一下Google對于程序的停止狀態(tài)的描述.

什么是程序的停止狀態(tài)

復制代碼 代碼如下:

Starting from Android 3.1, the system's package manager keeps track of applications that are in a stopped state and provides a means of controlling their launch from background processes and other applications.

從Android 3.1開始,系統(tǒng)的包管理器開始跟蹤處理停止狀態(tài)的程序.并且提供了方法來控制從后臺進程或者其他程序?qū)λ鼈兊膯?

Note that an application's stopped state is not the same as an Activity's stopped state. The system manages those two stopped states separately.

注意 程序的停止狀態(tài)和Activity的停止狀態(tài)不同,系統(tǒng)會單獨處理這兩種狀態(tài).

The platform defines two new intent flags that let a sender specify whether the Intent should be allowed to activate components in stopped application. Android平臺提供了兩個intent flags,用來讓發(fā)送廣播的一方?jīng)Q定廣播是否需要同時發(fā)送給已經(jīng)停止的程序.

FLAG_INCLUDE_STOPPED_PACKAGES ― Include intent filters of stopped applications in the list of potential targets to resolve against. 將已經(jīng)支持的程序加入到能處理intent的目標處理者.

FLAG_EXCLUDE_STOPPED_PACKAGES ― Exclude intent filters of stopped applications from the list of potential targets. 在能處理intent的目標處理者中不包含已經(jīng)停止的程序.


當如果intnet中沒有或者設置了上面兩個flag,在目標處理者中是包含已經(jīng)處于停止的程序.但是注意,系統(tǒng)會為所有的廣播intent增加FLAG_EXCLUDE_STOPPED_PACKAGES這個flag.

為什么Android要引入這一狀態(tài)

復制代碼 代碼如下:

Note that the system adds FLAG_EXCLUDE_STOPPED_PACKAGES to all broadcast intents. It does this to prevent broadcasts from background services from inadvertently or unnecessarily launching components of stoppped applications. A background service or application can override this behavior by adding the FLAG_INCLUDE_STOPPED_PACKAGES flag to broadcast intents that should be allowed to activate stopped applications.

需要注意的是,系統(tǒng)會默認地對所有的廣播intent增加一個FLAG_EXCLUDE_STOPPED_PACKAGES的flag,這樣做的目的是為了阻止來自后臺服務的廣播不慎或者啟動處于停止狀態(tài)的程序的不必要的組件.

通常的intnet廣播,處于停止狀態(tài)的程序的receiver是無法接受到的.那么怎么才能讓這些停止狀態(tài)的程序接受到呢?可以這樣做,在后臺服務或者應用中發(fā)送廣播時,增加一個FLAG_INCLUDE_STOPPED_PACKAGES 的flag,意思是包含處于停止狀態(tài)的程序.這樣就可以激活停止狀態(tài)的程序.

正如上述引用指出,系統(tǒng)默認阻止廣播intent發(fā)送給處于停止狀態(tài)的程序包,實際上這是為了保證安全和省電需要.比如說網(wǎng)絡變化的廣播,如果某些程序注冊監(jiān)聽,并且它在得到廣播時,做一系列的網(wǎng)絡操作,這樣必然是很耗能源的.

激活狀態(tài)和停止狀態(tài)的切換

當程序第一次安裝并且沒有啟動,或者用戶手動從程序管理將其停止后,程序都會處于停止狀態(tài).

如何變?yōu)橥V範顟B(tài)

1.在設置應用管理中的應用詳情頁點擊強制停止
2.使用adb shell adb shell am force-stop package-name
3.使用ActivityManager的隱藏方法forceStopPackages,并且向manifest加入申請權(quán)限<uses-permission android:name=“android.permission.FORCE_STOP_PACKAGES”/>

如何脫離停止狀態(tài)

1.手動啟動程序
2.使用adb激活應用組件,如activity或者receiver

發(fā)送廣播intent給處于停止狀態(tài)的應用

1.在Java代碼發(fā)送Intent時,加入flag FLAG_INCLUDE_STOPPED_PACKAGES
2.如果使用adb,同樣是加入FLAG_INCLUDE_STOPPED_PACKAGES(其具體值為32),如adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -f 32

檢查是否處于停止狀態(tài)

1.進入設置―應用管理―某個應用的詳細頁,如果強制停止按鈕不可用,則說明程序已經(jīng)處于停止狀態(tài).
2.進入設備終端,查看系統(tǒng)文件cat /data/system/packages-stopped.xml

問答環(huán)節(jié)

提問:如果我的程序沒有activity只有一個receiver,我改如何激活才能接收到正常的廣播intent呢

回答:實際上,如果是上面所述的情況,該應用在安裝之后不是處于停止狀態(tài),因為它沒有任何用戶可以直接點擊的行為去將它移除停止狀態(tài).你可以正常接收廣播intent,除非你人為地將它強制停止.

提問:系統(tǒng)的程序剛安裝會處于停止狀態(tài)么?

回答:系統(tǒng)的程序通常會存放在 /system/app目錄下,在一開始安裝之后不會處于停止狀態(tài).

提問:Google Play的推廣廣播據(jù)說是在程序安裝完成之后發(fā)送,是不是3.1之后受影響么

回答:不受影響的.Google文檔說INSTALL_REFERRER會在程序安裝完成之后發(fā)送,據(jù)實際查看日志觀察,從3.1之后,是在程序安裝后第一次打開時發(fā)送.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲精品久久久久午夜 | 日韩av片免费看 | 午夜视频在线观看网站 | 中文字幕在线亚洲 | 亚洲三区视频 | 国产高清视频在线 | 成人免费毛片高清视频 | 国产综合99 | 亚洲精品在线免费播放 | 欧洲美女7788成人免费视频 | 国产精品国产自产拍高清 | 亚洲精品一区二区另类图片 | 欧美在线观看免费观看视频 | 国产精品久久久久久久久久妞妞 | 精品视频一区二区 | 久热精品在线 | 婷婷欧美 | 亚洲精品成人免费 | 成人黄色免费网 | 久草免费在线视频 | 日韩久久一区二区 | 国产精品久久精品 | 亚洲高清在线观看 | 四虎最新地址 | 亚洲高清在线观看 | 男女免费在线观看视频 | 日韩精品一区二区三区视频播放 | 日韩一二三区 | 91精品国产综合久久久蜜臀图片 | 国产一区二区三区久久久 | 亚洲精品高清视频 | 欧美一区二区在线免费观看 | 欧美日韩第一页 | 在线小视频 | 精品一区视频 | 久久精品国产亚洲精品 | 久久久国产一区二区三区 | 成人毛片在线免费看 | 韩国三级中文字幕hd久久精品 | 奇米色777欧美一区二区 | 美女午夜视频 |