2013-12-18 2 views
0

이 프로그램은 사용자가 루트 액세스 상태를 변경했는지 여부를 감지합니다. 사용자는 모든 기간을 정의합니다. 이 시간에는 루트 액세스 상태를 제어합니다. 서비스를 시작하면 오류가 발생합니다. 사실 그것은 이전에 작동했지만 지금은 작동하지 않습니다. null 변수를 찾을 수 없습니다. 장치에서 응용 프로그램 관리자를 열고 실행중인 서비스를 찾습니다. 이 서비스에 대해 '다시 시작하기'라고 표시됩니다.HandleServiceArgs null 포인터 예외 ~ Android 서비스

RootAccess Service;

public class RootAccessService extends Service{ 

@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public void onStart(Intent intent,int startId) { 

    Bundle b= intent.getExtras(); 
    if(b != null){ 

     context = getApplicationContext(); 
     helper = new SQLiteHelper(context); 
     timer = new Timer(); 
     handler = new Handler(); 
     inventoryId = 1; 
     periodSelection = b.getString("period"); 

     parts = periodSelection.split(" "); 
     min = Long.parseLong(parts[0]); 
     time = min * 60 * 1000; 
     killMe = false; 
     handler.postDelayed(check, time); 
    } 

} 


private final Runnable check = new Runnable() { 

    @Override 
    public void run() { 
     // TODO Auto-generated method stub 
     if(killMe) 
      return; 
     Start(); 
     handler.postDelayed(check, time); 
    } 
}; 

@Override 
public void onDestroy(){ 
    Stop(); 
    super.onDestroy(); 

} 

public void Start(){ 
    //do smtg 
} 

public void Stop(){ 
    handler.removeCallbacksAndMessages(check); 
    killMe = true; 
    helper.close(); 
} 

}

12-18 14:02:24.783: E/AndroidRuntime(18004): FATAL EXCEPTION: main 
12-18 14:02:24.783: E/AndroidRuntime(18004): java.lang.RuntimeException: Unable to start service [email protected] with null: java.lang.NullPointerException 
12-18 14:02:24.783: E/AndroidRuntime(18004): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2553) 

12-18 14:02:24.783: E/AndroidRuntime(18004): at android.app.ActivityThread.access$2000(ActivityThread.java:134) 
12-18 14:02:24.783: E/AndroidRuntime(18004): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 
12-18 14:02:24.783: E/AndroidRuntime(18004): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-18 14:02:24.783: E/AndroidRuntime(18004): at android.os.Looper.loop(Looper.java:137) 
12-18 14:02:24.783: E/AndroidRuntime(18004): at android.app.ActivityThread.main(ActivityThread.java:4867) 
12-18 14:02:24.783: E/AndroidRuntime(18004): at java.lang.reflect.Method.invokeNative(Native Method) 
12-18 14:02:24.783: E/AndroidRuntime(18004): at java.lang.reflect.Method.invoke(Method.java:511) 
12-18 14:02:24.783: E/AndroidRuntime(18004): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007) 
12-18 14:02:24.783: E/AndroidRuntime(18004): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774) 
12-18 14:02:24.783: E/AndroidRuntime(18004): at dalvik.system.NativeStart.main(Native Method) 
12-18 14:02:24.783: E/AndroidRuntime(18004): Caused by: java.lang.NullPointerException 
12-18 14:02:24.783: E/AndroidRuntime(18004): at com.example.cryptodlp.RootAccessService.onStart(RootAccessService.java:49) 
12-18 14:02:24.783: E/AndroidRuntime(18004): at android.app.Service.onStartCommand(Service.java:450) 
12-18 14:02:24.783: E/AndroidRuntime(18004): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2536) 
12-18 14:02:24.783: E/AndroidRuntime(18004): ... 10 more 

답변

0

나는이 문제를 검색하고 나는 알람 관리기를 사용 알람 관리기와 함께 서비스를 시작합니다.

Calendar cal = Calendar.getInstance(); 

Intent intent = new Intent(mContext, RootAccessService.class); 
PendingIntent pintent = PendingIntent.getService(mContext, 0, intent, 0); 

AlarmManager alarm = (AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE); 
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), Integer.parseInt(parts[0])*60*1000, pintent);