如何让Android Service不被清除或者常驻内存
2个回答
2017-08-12
展开全部
1、在配置文件AndroidManifest.xml应用的application节点添加android:persistent=”true”,保证该应用程序所在进程不会被LMK杀死。提高软件运行的优先级。注:只设置android:persistent=”true”仍然会被杀死的情况。2、在activity的onStop()执行时,启用一个像素的悬浮窗防止应用被清理,代码如下:Buttonbutton=newButton(getApplicationContext());WindowManagerwm=(WindowManager)getApplicationContext().getSystemService(Context.WINDOW_SERVICE);WindowManager.LayoutParamswmParams=newWindowManager.LayoutParams();/***以下都是WindowManager.LayoutParams的相关属性具体用途请参考SDK文档*/wmParams.type=LayoutParams.TYPE_PHONE;//这里是关键,你也可以试试2003wmParams.format=PixelFormat.RGBA_8888;//设置图片格式,效果为背景透明/***这里的flags也很关键代码实际是wmParams.flags|=FLAG_NOT_FOCUSABLE;*40的由来是wmParams的默认属性(32)+FLAG_NOT_FOCUSABLE(8)*/wmParams.flags=LayoutParams.FLAG_NOT_TOUCH_MODAL|LayoutParams.FLAG_NOT_FOCUSABLE|LayoutParams.FLAG_NOT_TOUCHABLE;wmParams.width=1;wmParams.height=1;wm.addView(button,wmParams);//创建View
2017-08-12
展开全部
android实现开机自启动可能是移动操作系统中最简单的了,我们只需要监听一个开机启动的Broadcast(广播)即可。首先写一个Receiver(即广播监听器),继承BroadcastReceiver,如下所示:publicclassBootReceiverextendsBroadcastReceiver{privatePendingIntentmAlarmSender;@OverridepublicvoidonReceive(Contextcontext,Intentintent){//在这里干你想干的事(启动一个Service,Activity等),本例是启动一个定时调度程序,每30分钟启动一个Service去更新数据mAlarmSender=PendingIntent.getService(context,0,newIntent(context,RefreshDataService.class),0);longfirstTime=SystemClock.elapsedRealtime();AlarmManageram=(AlarmManager)context.getSystemService(Activity.ALARM_SERVICE);am.cancel(mAlarmSender);am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,firstTime,30*60*1000,mAlarmSender);}}接下来,我们只需要在应用程序配置文件AndroidManifest.xml中注册这个Receiver来监听系统启动事件即可,如下所示:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询