2016-12-21 52 views
0

在我的應用程序中編程時,我有一個小問題。我正在編寫一項服務,向我顯示我的電話在過去24小時內活動的次數。 我正在通過偵聽屏幕開/關動作來做到這一點,並且我通過拖動按鈕獲得越來越多的接收。Android BroadcastReceiver在偵聽屏幕開/關事件時獲取多個事件

其實我騎上它的模式,所以:

logs getherd = logs getterd in the previus button puss * 2 - 8 

我Reciver類:

package com.example.balinator.androidprojekt.services.screenonservice; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.hardware.display.DisplayManager; 
import android.os.Bundle; 
import android.os.PowerManager; 
import android.telephony.TelephonyManager; 
import android.util.Log; 
import android.view.Display; 

import com.example.balinator.androidprojekt.database.Database; 

import java.util.Set; 

/** 
* Created by Balinator on 2016. 12. 15.. 
*/ 
public class MyScreenOnOffReciver extends BroadcastReceiver { 
    private static final String tag = "MyScreenOnOffReciver"; 

    private Database db; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     String state = intent.getAction(); 

     if (state.equals(Intent.ACTION_SCREEN_ON)) { 
      if(db == null){ 
       db = new Database(context); 
      } 
      db.open(); 
      long id = db.getService(MyScreenOnService.sName).getId(); 
      db.createServiceLog(id,System.currentTimeMillis() + ":on"); 
      db.close(); 
      Log.d(tag,"screen on log"); 
     }else if(state.equals(Intent.ACTION_SCREEN_OFF)) { 
      if (db == null) { 
       db = new Database(context); 
      } 
      db.open(); 
      long id = db.getService(MyScreenOnService.sName).getId(); 
      db.createServiceLog(id, System.currentTimeMillis() + ":off"); 
      db.close(); 
      Log.d(tag, "screen off log"); 
     } 
    } 
} 

回答

0

我想您註冊的接收器2倍

  1. 在活動
  2. 清單

使用以上任何一種方法註冊您的接收器一次..然後它會b fyn