我已经为锁定屏幕服务创建了一项服务,服务的目的是注册和注册接收器,但由于我的应用程序在没有足够的内存消耗时崩溃,导致内存泄漏 这是我的代码
package com.itstars.daynightlockscreen;
import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.PixelFormat;
import android.media.AudioManager;
import android.os.IBinder;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Toast;
public class LockService extends Service {
public static boolean wal;
public static boolean isRunning;
public static TimeChangeReceiver receiver;
KeyguardManager keyguardManager;
KeyguardLock lock;
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
keyguardManager = (KeyguardManager) getSystemService(Service.KEYGUARD_SERVICE);
lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
wal = intent.getBooleanExtra("wal", false);
isRunning = intent.getBooleanExtra("locker",false);
receiver = new TimeChangeReceiver();
registerReceiver(receiver, filter);
isRunning = true;
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
isRunning = false;
keyguardManager = (KeyguardManager) getSystemService(Service.KEYGUARD_SERVICE);
lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.reenableKeyguard();
}
}
答案 0 :(得分:0)
您是否在Manifest中定义了服务?如果是,则 那你有同意吗
`android.permission.DISABLE_KEYGUARD`
清单中的?如果是,那么
将代码放在onStartCommand的try-catch块中,在onStartCommand方法的第一行放置一个调试点,观察它跳转到catch块的行。
因为错误必须只在您的onStartCommand方法中。
START_NOT_STICKY
从onStartCommand(Intent,int,int)返回的常量:如果此服务的进程在启动时被终止(从onStartCommand(Intent,int,int)返回后),并且没有新的启动意图传递给它,然后将服务从启动状态中取出,并且不要重新创建,直到将来显式调用Context.startService(Intent)。
START_STICKY
从onStartCommand(Intent,int,int)返回的常量:如果此服务的进程在启动时被终止(从onStartCommand(Intent,int,int)返回后),则将其保留在启动状态国家但不保留这种意图。
使用上面的描述决定你想要使用粘性意图的位置吗?