![](/img/trans.png)
[英]LocationListener doesn't provide update after sometime in android service
[英]android service crashes after sometime
我已經為鎖定屏幕服務創建了一個服務,該服務的目的是注冊和取消注冊接收者,但是由於沒有足夠的內存來消耗我的應用程序而導致崩潰,這會導致內存泄漏這是我的代碼
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();
}
}
您在清單中定義了服務嗎? 如是,
那你同意嗎
`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)返回之后),則將其保留為啟動狀態,但不保留此狀態傳達了意圖。
使用上面的描述確定您要在哪里使用粘性意圖?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.