锁屏后service不被杀掉

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;

public class OnePxActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_on_px);

        Window window = getWindow();
        window.setGravity(Gravity.LEFT | Gravity.TOP);
        WindowManager.LayoutParams params = window.getAttributes();
        params.x = 0;
        params.y = 0;
        params.width = 1;
        params.height = 1;
        window.setAttributes(params);

        registerReceiver(receiver, new IntentFilter("FinishActivity"));
    }

    @Override
    protected void onDestroy() {
        unregisterReceiver(receiver);
        super.onDestroy();
    }

	protected BroadcastReceiver receiver = new BroadcastReceiver() {

		@Override
		public void onReceive(Context arg0, Intent arg1) {
            OnePxActivity.this.finish();
		}
    };
}
<style name="undeadActivityStyle">

    <!-- 背景设置为透明 -->
    <item name="android:windowBackground">@android:color/transparent</item>
    <!-- 是否有边框 -->
    <item name="android:windowFrame">@null</item>
    <item name="android:windowNoTitle">true</item>
    <!-- 是否浮动在界面上 -->
    <item name="android:windowIsFloating">true</item>
    <!-- 是否透明 -->
    <item name="android:windowIsTranslucent">true</item>
    <!-- 窗体上面是否有遮盖 -->
    <item name="android:windowContentOverlay">@null</item>
    <!-- 为窗体的Enter和Exit设置动画 -->
    <item name="android:windowAnimationStyle">@null</item>
    <!-- 是否禁止窗体显示前显示的View -->
    <item name="android:windowDisablePreview">true</item>
    <item name="android:windowNoDisplay">false</item>
</style>
<activity
    android:name=".OnePxActivity"
    android:configChanges="keyboardHidden|orientation|screenSize|navigation|keyboard"
    android:excludeFromRecents="true"
    android:exported="false"
    android:finishOnTaskLaunch="false"
    android:launchMode="singleInstance"
    android:process=":process"
    android:theme="@style/undeadActivityStyle" >

service.java

BroadcastReceiver myBroadcast = new BroadcastReceiver() {

	@Override
	public void onReceive(Context context, Intent intent) {
		String action = intent.getAction();
		if (action.equals(Intent.ACTION_SCREEN_OFF)) {
			Log.i("trans", "screen off");
			Intent activity = new Intent(context, OnePxActivity.class);
			activity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			context.startActivity(activity);
		} else if (action.equals(Intent.ACTION_SCREEN_ON)) {
			Log.i("trans", "screen on");
			Intent broadcast = new Intent("FinishActivity");
			context.sendBroadcast(broadcast);
		}
	}
};

@Override
public int onStartCommand(final Intent intent, int flags, int startId) {
	super.onStartCommand(intent, flags, startId);
	IntentFilter screenStatus = new IntentFilter();
	screenStatus.addAction(Intent.ACTION_SCREEN_OFF);
	screenStatus.addAction(Intent.ACTION_SCREEN_ON);
	registerReceiver(myBroadcast, screenStatus);

	return START_STICKY;
}

@Override
public void onDestroy() {
    super.onDestroy();
    unregisterReceiver(myBroadcast);
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值