日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解Android 進程

瀏覽:148日期:2022-09-22 18:41:25

多進程

如果需要的時候,app可以創建多進程。

在進程里面

各類組件元素的清單文件條目 、 、 和— 均支持 android:process 屬性,此屬性可以指定該組件應在哪個進程運行。

默認進程就是主進程。其他進程一般來說都是子進程。

2個activity在不同的進程里面,可以刷新UI嗎?

<activity android:name='.androidsample.ActivityProgressB' android:process=':progressb'/>

測試結果:ActivityProgressB可以正常顯示。這個其實很好理解,如果你打開系統相機頁面,那個activity肯定與你的app不再一個進程,但是他可以很順利的打開,所以可以支持。

保活

OOM_ADJ

詳解Android 進程

這個就是oom 回kill進程的優先級。

進程kill的方式

場景 接口 范圍 LowMemoryKiller LowMemoryKiller 從進程的優先級依次kill,釋放內存 三方kill(無root) killbackgroundprogersss kill oom_adj>4 三方kill(有root) forcestop or kill 理論上所有,一般是非系統和可見進程 廠商kill功能 force stop or kill 理論上所有,包括native

進程保活的目的,就是提供進程的優先級,降低進程被kill的概率。

保活的套路

開啟1個像素的activity

2020-08-14 14:29:48.630 1164-8504/system_process W/ActivityTaskManager: Background activity start [callingPackage: com.demanmath.androidms; callingUid: 10398; isCallingUidForeground: false; isCallingUidPersistentSystemProcess: false; realCallingUid: 10398; isRealCallingUidForeground: false; isRealCallingUidPersistentSystemProcess: false; originatingPendingIntent: null; isBgStartWhitelisted: false; intent: Intent { flg=0x10000000 cmp=com.demanmath.androidms/.androidsample.LiveActivity }; callerApp: ProcessRecord{a168b71 2429:com.demanmath.androidms/u0a398}]

在android Q以后,不允許后臺進程啟動后臺頁面了。也就是想啟動一個前臺頁面

使用前臺服務

package com.demanmath.androidms.androidsampleimport android.annotation.TargetApiimport android.app.Notificationimport android.app.NotificationChannelimport android.app.NotificationManagerimport android.app.Serviceimport android.content.Contextimport android.content.Intentimport android.os.Buildimport android.os.Handlerimport android.os.IBinderimport androidx.core.app.NotificationCompatimport com.demanmath.androidms.AppLogimport com.demanmath.androidms.R/** * @author DemanMath * @date 2020/8/14 * */class KeepLiveService:Service() { val NOTIFICATION_ID = 0x11 val NOTIFICATION_CHANNEL_ID = 'demanmathId' val channelName = 'My Background Service' companion object { const val NOTIFICATION_ID = 0x11 } override fun onBind(intent: Intent?): IBinder? { return null } override fun onCreate() { super.onCreate() if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { startForeground(NOTIFICATION_ID, Notification()) } else { startMyOwnForeground() startService(Intent(this, InnerService::class.java)) } } @TargetApi(value = Build.VERSION_CODES.O) private fun startMyOwnForeground() { AppLog.d() val chan = NotificationChannel( NOTIFICATION_CHANNEL_ID, channelName, NotificationManager.IMPORTANCE_NONE ) chan.lockscreenVisibility = Notification.VISIBILITY_PRIVATE val manager = (getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager) manager.createNotificationChannel(chan) val notificationBuilder = NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID) val notification = notificationBuilder.setOngoing(true) .setSmallIcon(R.drawable.ic_launcher_background) .setContentTitle('App is running in background') .setPriority(NotificationManager.IMPORTANCE_MIN) .setCategory(Notification.CATEGORY_SERVICE) .build() startForeground(NOTIFICATION_ID, notification) } class InnerService : Service() { override fun onBind(intent: Intent): IBinder? { return null } override fun onCreate() { super.onCreate() //使用channeId & channelName //發送與KeepLiveService中ID相同的Notification,然后將其取消并取消自己的前臺顯示// val builder: Notification.Builder = Notification.Builder(this)// builder.setSmallIcon(R.mipmap.ic_launcher)// startForeground(NOTIFICATION_ID, builder.build()) Handler().postDelayed(Runnable {stopForeground(true)val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManagermanager.cancel(NOTIFICATION_ID)stopSelf() }, 100) } }}

但是androidQ開始以后,禁止后臺進程開啟前臺進程,這個也是android為了省電考慮的。

多進程相互喚醒

這個就是每個app,其多個進程,如果比kill掉了,可以通過另一個喚起。從上面的前臺service的功效有些類似。

同樣的問題,android Q以后無效。

JobSchedule

package com.demanmath.androidms.jobserviceimport android.app.job.JobParametersimport android.app.job.JobServiceimport android.content.Intentimport android.os.Handlerimport android.os.Messageimport android.widget.Toastimport com.demanmath.androidms.AppLog/** * @author DemanMath * @date 2020/8/20 * */class JobDemoService:JobService() { override fun onCreate() { super.onCreate() AppLog.i() } override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { AppLog.i() return super.onStartCommand(intent, flags, startId) } private var mHandler = object:Handler(){ override fun handleMessage(msg: Message) { AppLog.i() Toast.makeText(applicationContext,'JobService task running', Toast.LENGTH_SHORT ).show() //請注意,我們手動調用了jobFinished方法。 //當onStartJob返回true的時候,我們必須手動調用jobFinished方法 //否則該應用中的其他job將不會被執行 jobFinished(msg.obj as JobParameters, false) } } override fun onStartJob(params: JobParameters?): Boolean { AppLog.i() mHandler.sendMessage(Message.obtain(mHandler,1,params)) return true } override fun onStopJob(params: JobParameters?): Boolean { AppLog.i() mHandler.removeMessages(1) return false }}

package com.demanmath.androidms.jobserviceimport android.app.job.JobInfoimport android.app.job.JobSchedulerimport android.content.ComponentNameimport android.content.Contextimport com.demanmath.androidms.AppLog/** * @author DemanMath * @date 2020/8/20 * */class JobHelper(var context: Context) { lateinit var jobScheduler:JobScheduler fun startJob(){ AppLog.i() jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler var builder = JobInfo.Builder(1, ComponentName(context.packageName,JobDemoService::class.java.name))// builder.setBackoffCriteria(1000L,JobInfo.BACKOFF_POLICY_LINEAR) var boolean = jobScheduler.schedule(builder.build()) AppLog.i(boolean.toString()) }}

以上就是詳解Android 進程的詳細內容,更多關于Android 進程的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久狠狠久久| 成人久久一区| 亚洲免费一区二区| 久久国产中文字幕| 久久久精品网| 今天的高清视频免费播放成人| 色爱av综合网| 国产精品7m凸凹视频分类| 欧美日韩三区| 在线精品亚洲| 日韩精品a在线观看91| 日本视频中文字幕一区二区三区| 日本视频一区二区| 国产福利一区二区精品秒拍 | 88久久精品| 国产欧美日韩精品一区二区免费| 国产欧美日韩一区二区三区四区 | 亚洲精品动态| 久久国际精品| 国产一区二区三区四区| 国产传媒在线| 欧美日韩激情| 亚洲天堂日韩在线| 欧美精品中文| 成人午夜在线| 午夜影院欧美| 婷婷综合电影| 国产精品videosex极品| 国产一区二区三区四区二区| 欧美日中文字幕| 日韩在线观看一区二区| 日韩视频一二区| 欧美成人精品一级| 久久视频精品| 亚洲永久精品唐人导航网址| 国产免费av国片精品草莓男男 | 国产精品蜜芽在线观看| 国产在线成人| 日本h片久久| 国内精品麻豆美女在线播放视频| 桃色一区二区| 丝袜国产日韩另类美女| 国产亚洲一区| 香蕉视频亚洲一级| 综合精品一区| 国产91欧美| 亚洲制服少妇| 你懂的国产精品永久在线| 久久久久99| 日韩精品免费视频人成| 中文字幕一区久| 一区二区三区午夜视频| 国产一区二区三区久久| 在线亚洲观看| 久久av综合| 婷婷中文字幕一区| 国产欧美日韩在线观看视频| 国产一区清纯| 久久av偷拍| 在线亚洲激情| 国产一区丝袜| 亚洲免费专区| 青青久久av| 国产乱人伦精品一区| 婷婷综合五月| 免费在线欧美黄色| 性一交一乱一区二区洋洋av| 欧美黑人巨大videos精品| 欧美成人日韩| 精品在线网站观看| 噜噜噜久久亚洲精品国产品小说| 高潮久久久久久久久久久久久久| 视频一区二区三区在线| 91精品韩国| 久久国产精品美女| 中文无码日韩欧| 日本免费一区二区三区四区| 日韩精品一级| 欧美在线亚洲| 97精品97| 国产精品嫩草影院在线看| 久久av一区| 91精品啪在线观看国产18| 国产精品免费99久久久| 中文在线不卡| sm捆绑调教国产免费网站在线观看| 亚洲另类黄色| 欧美午夜不卡影院在线观看完整版免费 | 日韩欧美一区二区三区免费看| 日本午夜精品久久久| 国产精品美女| 久久国产影院| 中文av在线全新| 国产高清日韩| 911亚洲精品| 综合欧美亚洲| 国产视频一区免费看| 日韩在线高清| 欧美黄色一区二区| 91九色综合| 亚洲精品在线国产| 亚洲一区二区三区高清| 99精品视频在线观看免费播放| 国产aa精品| 你懂的国产精品永久在线| 国产亚洲一卡2卡3卡4卡新区| 亚洲麻豆一区| 99日韩精品| 亚洲高清成人| 日韩中文首页| 久久精品观看| 日韩欧美精品一区| 欧美日韩免费观看视频| 91综合网人人| 成人在线丰满少妇av| 老鸭窝一区二区久久精品| 国产精品久久久久久妇女 | 久久这里只有| 麻豆久久久久久| 国产高清精品二区| 久久不卡国产精品一区二区| 国产精品亚洲综合久久| 久久激情五月婷婷| 国产欧美日韩亚洲一区二区三区| 日韩av一级片| 国产欧美一区二区三区精品观看 | 国产亚洲欧美日韩精品一区二区三区| 日韩精品一级| 国产日韩一区二区三区在线 | 国产一区二区三区久久久久久久久| 精品一区二区三区的国产在线观看 | 国产精品亚洲一区二区三区在线观看| 国产一区二区三区不卡视频网站| 久久男人av| 国产+成+人+亚洲欧洲在线| 欧美日韩国产观看视频| 亚洲精品一区三区三区在线观看| 99精品一区| 久久最新视频| 日韩福利在线观看| 欧美激情久久久久久久久久久| 麻豆高清免费国产一区| 国产精品久久久久久久免费观看| 日韩精品第一区| 美女网站一区| 男人的天堂亚洲一区| 亚洲毛片网站| 美女视频免费精品| 久久久久国产精品一区三寸| 91久久国产| 日本一区二区三区视频在线看| 欧美精品福利| 97视频热人人精品免费| 欧美在线资源| 97久久亚洲| 久久久久久一区二区| 999国产精品视频| 水野朝阳av一区二区三区| 欧美欧美黄在线二区| 精品99在线| 欧美午夜精品一区二区三区电影| 99久久久久| 在线国产日韩| 国产一区二区色噜噜| 伊人久久亚洲美女图片| 日韩不卡一区二区| 色在线中文字幕| 老司机精品久久| 国产精品4hu.www| 99精品网站| 青草久久视频| 天堂а√在线最新版中文在线| 99视频精品免费观看| 久久国产精品色av免费看| 啪啪国产精品| 日本少妇一区二区| 亚洲伦乱视频| 91大神在线观看线路一区| 最新中文字幕在线播放| 蜜桃久久精品一区二区| 久久久国产精品入口麻豆| 91九色精品| 久久精品色播| 香蕉久久国产| 91亚洲国产成人久久精品| 一区二区三区四区日韩| 亚洲黄色中文字幕| 日韩二区在线观看| 99精品综合| 国产精品视频一区二区三区 | 91亚洲精品在看在线观看高清| 久久精品国产亚洲一区二区三区| 欧美日韩国产精品一区二区亚洲| 国产精品白丝久久av网站| 性欧美69xoxoxoxo| 久久中文字幕导航| 蜜臀久久久99精品久久久久久| 国产va免费精品观看精品视频| 亚洲v天堂v手机在线| 999国产精品视频|