- 浏览: 633954 次
文章分类
最新评论
-
树下白狐:
listview与adapter用法 -
u011467537:
...
Android背景渐变色(shape,gradient) -
asdf12343800:
asdf12343800 写道asdf12343800 写道a ...
Android背景渐变色(shape,gradient) -
asdf12343800:
asdf12343800 写道asdf12343800 写道 ...
Android背景渐变色(shape,gradient) -
asdf12343800:
asdf12343800 写道 : lol: fghhg
Android背景渐变色(shape,gradient)
1.在service中重写下面的方法,这个方法有三个返回值, START_STICKY是service被kill掉后自动重写创建
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}----------------
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
Log.v("TrafficService","startCommand");
flags = START_STICKY;
return super.onStartCommand(intent, flags, startId);
// return START_REDELIVER_INTENT;
}
2.在Service的onDestroy()中重启Service.
public void onDestroy() {
Intent localIntent = new Intent();
localIntent.setClass(this, MyService.class); //销毁时重新启动Service
this.startService(localIntent);
}---------------------------------------------
用qq管家杀掉进程的时候,调用的是系统自带的强制kill功能(即settings里的),在kill时,会将应用的整个进程停掉,当然包括service在内,如果在running里将service强制kill掉,显示进程还在。不管是kill整个进程还是只kill掉进应用的 service,都不会重新启动service。不知道你是怎么怎么实现重启的,实在是不解。。。
ps:在eclipse中,用stop按钮kill掉进程的时候,倒是会重启service
KILL问题:
1. settings 中stop service
onDestroy方法中,调用startService进行Service的重启。
2.settings中force stop 应用
捕捉系统进行广播(action为android.intent.action.PACKAGE_RESTARTED)
3. 借助第三方应用kill掉running task
提升service的优先级
--------------------------------------------
service开机启动
http://blog.csdn.net/flying_vip_521/article/details/7053355
- 今天我们主要来探讨android怎么让一个service开机自动启动功能的实现。Android手机在启动的过程中会触发一个Standard Broadcast Action,名字叫android.intent.action.BOOT_COMPLETED(记得只会触发一次呀),在这里我们可以通过构建一个广播接收者来接收这个这个action.下面我就来简单写以下实现的步骤:
- 第一步:首先创建一个广播接收者,重构其抽象方法 onReceive(Context context, Intent intent),在其中启动你想要启动的Service或app。
-
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.util.Log;
- public class BootBroadcastReceiver extends BroadcastReceiver {
- //重写onReceive方法
- @Override
- public void onReceive(Context context, Intent intent) {
- //后边的XXX.class就是要启动的服务
- Intent service = new Intent(context,XXXclass);
- context.startService(service);
- Log.v("TAG", "开机自动服务自动启动.....");
- //启动应用,参数为需要自动启动的应用的包名
- Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);
- context.startActivity(intent );
- }
-
}
- 第二步:配置xml文件,在receiver接收这种添加intent-filter配置
- <receiver android:name="BootBroadcastReceiver">
- <intent-filter>
- <action android:name="android.intent.action.BOOT_COMPLETED"></action>
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </receiver>
-
第三步:添加权限 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
---------------------------------------------------
如何实现一个不会被杀死的进程
看Android的文档知道,当进程长期不活动,或系统需要资源时,会自动清理门户,杀死一些Service,和不可见的Activity等所在的进程。
但是如果某个进程不想被杀死(如数据缓存进程,或状态监控进程,或远程服务进程),应该怎么做,才能使进程不被杀死。
add android:persistent="true" into the <application> section in your AndroidManifest.xml
切记,这个不可滥用,系统中用这个的service,app一多,整个系统就完蛋了。
目前系统中有phone等非常有限的,必须一直活着的应用在试用。
------------------------------------------------
提升service优先级的方法
Android 系统对于内存管理有自己的一套方法,为了保障系统有序稳定的运信,系统内部会自动分配,控制程序的内存使用。当系统觉得当前的资源非常有限的时候,为了保 证一些优先级高的程序能运行,就会杀掉一些他认为不重要的程序或者服务来释放内存。这样就能保证真正对用户有用的程序仍然再运行。如果你的 Service 碰上了这种情况,多半会先被杀掉。但如果你增加 Service 的优先级就能让他多留一会,我们可以用 setForeground(true) 来设置 Service 的优先级。
为什么是 foreground ? 默认启动的 Service 是被标记为 background,当前运行的 Activity 一般被标记为 foreground,也就是说你给 Service 设置了 foreground 那么他就和正在运行的 Activity 类似优先级得到了一定的提高。当让这并不能保证你得 Service 永远不被杀掉,只是提高了他的优先级。
从Android 1.5开始,一个已启动的service可以调用startForeground(int, Notification)将service置为foreground状态,调用stopForeground(boolean)将service置为 background状态。
我们会在调用startForeground(int, Notification)传入参数notification,它会在状态栏里显示正在进行的foreground service。background service不会在状态栏里显示。
在Android 1.0中,将一个service置为foreground状态:
setForeground(true);
mNM.notify(id, notification);
将一个service置为background状态:
mNM.cancel(id);
setForeground(false);
对比看出,在1.0 API中调用setForeground(boolean)只是简单的改变service的状态,用户不会有任何觉察。新API中强制将 notification和改变service状态的动作绑定起来,foreground service会在状态栏显示,而background service不会。
Remote service controller & binding
跨进程调用Service。暂时不研究。
-------------------------------------------------------
如何防止Android应用中的Service被系统回收? 很多朋友都在问,如何防止Android应用中的Service被系统回收?下面简单解答一下。
对于Service被系统回收,一般做法是通过提高优先级可以解决,在AndroidManifest.xml文件中对于intent-filter可以通过android:priority = "1000"这个属性设置最高优先级,1000是最高值,如果数字越小则优先级越低,同时实用于广播,推荐大家如果你的应用很重要,可以考虑通过系统常用intent action来触发。
发表评论
-
android layout查找顺序
2013-01-07 14:11 1142layout可以按后缀支持多分辨率,分辨率layout-mdp ... -
listview与adapter用法
2012-09-11 08:59 97425一个ListView通常有两 ... -
intent 传值
2012-09-11 08:58 1082intent.putExtra()存 getInten ... -
android(java)控制http连接超时的问题
2012-09-10 15:39 1528"声明一个boolean公共变量,表明当前httpc ... -
android 设置http等待超时
2012-09-10 15:39 11605BasicHttpParams httpPar ... -
android 设置椭圆
2012-09-10 15:39 2336<shape xmlns:android=& ... -
Android 自定义Button按钮显示样式(正常、按下、获取焦点)
2012-09-10 15:39 1287首先写一个定义Button样式的XML文件:新建Andr ... -
如何检查Android网络连接状态
2012-09-10 15:40 8694在发送任何HTTP请求前最 ... -
android 按两次返回键退出
2012-09-07 11:12 5377package com.anjoyo.test; ... -
Android Animation(二)
2012-09-07 10:58 944关于动画的实现,Andr ... -
activity切换动画
2012-09-07 10:55 4181在介绍切换动画效果前,先介绍下将使用到的Android ... -
android 震动
2012-09-07 10:02 2059让手机震动,需要创建Vibrator对象,通过调用vi ... -
android.R.layout下有一些常量存在哪?
2012-09-07 00:35 1156在你的android SDK目录下可以看到 例如 你的 and ... -
Android禁止横屏竖屏切换
2012-09-05 13:43 989在Android中要让一个程序的界面始终保持一个方向,不 ... -
ListView滚动加载(类似Android Market的列表)
2012-09-04 21:08 1758ListView滚动加载(类似Android Mark ... -
android 设置EditText只能输入数字
2012-09-03 23:23 47689android:numeric="intege ... -
填充Listview第一个Item的分隔线
2012-08-31 15:53 63131. 在res/drawable/目录下新建 mygra ... -
android相对父控件比例
2012-08-31 15:39 968shape xml中的gradient能用 70%p 这 ... -
分割线样式
2012-08-31 14:09 1083android给listview设置分割线Divider ... -
Android时钟
2012-08-31 13:21 21301. Android时钟,效果图: 2. ...
相关推荐
主要介绍了Android Service 服务不被杀死的妙招的相关资料,需要的朋友可以参考下
不被杀死的 安卓service com.lzg.strongService-master
Android Service被关闭后自动重启,解决被异常kill 服务
Android防止service多次执行startCommand 博客地址:http://blog.csdn.net/yuzhiqiang_1993/article/details/78211385
项目中遇到一个不想在开机时启动的app,所以利用了android中的两个方法:mActivityManager.forceStopPackage(packageName); mActivityManager.killBackgroundProcesses(packageName); 来杀死后台进程的demo,分享给...
android,启动service,并且service把值传给Activity显示
Android 锁屏页面避免被杀掉,解锁会自动关闭页面。防止后台运行时被关闭。 谷歌,小米,华为 亲测可用。 重点解决魅族手机,需要授权应用获得锁屏页面权限。
android aidl service
android service 简单实例代码 . binder继承一个接口,实现方法。
Android实现双进程守护,如何保证Service不被Kill,onStartCommand方法,返回START_STICKY,手动返回START_STICKY,亲测当service因内存不足被kill,当内存又有的时候,service又被重新创建,比较不错,但是不能保证...
Android Studio Service安卓在服务中如何弹出对话框Dialog
Android Native Service
关于Android Service的简单实例:属于start service类型,而不是bound service。
Android Service下载文件
android intent service 实例android intent service 实例android intent service 实例
Android Upload Service Easily upload files in the background with automatic Android Notification Center progress indication. Download the latest demo app APK which uses the library and try it ...
android如何保证service不被杀死.pdf
android学习之Service启动1
Android 采用service与定时器每隔3秒打印一次log,希望大家能自己扩展,只是简单用法,具体扩展还得靠自己哈。
android startService小demo,适合初学者。