几步搞定Service不被杀死

最近在搞不被系统杀死的Service,网上查了好多,大致的方法是:

1、修改Service的onStartCommand方法

public int onStartCommand(Intent intent, int flags, int startId) {  
    flags = START_STICKY;  
    return super.onStartCommand(intent, flags, startId);  
}  
2、在Service的onDestroy方法下修改如下:

@Override
	public void onDestroy() {
		// TODO Auto-generated method stub
		
		// 为了防止被kill,需要在此方法中重启一下Service
		Intent service_intent = new Intent(this, RecordService.class);
		startService(service_intent);		
		super.onDestroy();

	}
3、自己写一个广播,在OnReceive方法里边startService

//用来处理需要重启手机,需要启动过应用以后才会生效
public class BootCompletedReceiver extends BroadcastReceiver {

	Intent recordServiceIntent;
	static final String action_boot = "android.intent.action.BOOT_COMPLETED";

	@Override
	public void onReceive(Context context, Intent intent) {
		if (intent.getAction().equals(action_boot)) {			
			recordServiceIntent = new Intent(context,RecordService.class);
			context.startService(recordServiceIntent);
			}
		}
	}

}

4、修改Manifest文件

a、加权限

<!-- 开机自启动权限 -->
    <span style="color:#ff6666;"><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /></span>

b、注册广播

        <receiver android:name=".BootCompletedReceiver" >
            <intent-filter>
                <!-- 开机广播 -->
               <span style="color:#ff6666;"> <action android:name="android.intent.action.BOOT_COMPLETED" /></span>
            </intent-filter>
        </receiver>


c、修改application属性

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        <span style="color:#ff6666;">android:persistent="true"</span>
        android:theme="@style/AppTheme" >
d、修改Service的权限

        <service
            android:name="com.test.service.RecordService"
            android:priority="1000" >
        </service>

我在网上查的资料大致就是这样,按部就班,居然么有用!很火大!

最后用谷歌的两行代码搞定

就是在service的onCreate方法里边:

@Override
	public void onCreate() {
		// TODO Auto-generated method stub
		super.onCreate();
		Notification notice = new Notification();
		startForeground(1, notice);
	}

这个方法据说是谷歌提供的,解释如下:

如果要启动一个不会被杀死的服务都要通知用户,只要通知了用户以后服务就不会被杀死,但是一旦清除这些通知,服务一样会被杀死,我们这里采用投机取巧的办法,让服务不会被第三方任务管理器杀死。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值