Android : Android Service and AlarmManager crushing

on Saturday, August 2, 2014


I'm trying to create a Service that will run in the background and put a notification in the status bar every 10 sec (for testing only).


I reviewed many posts here but still was unable to find help.


For some reason, when I call the AlarmManager to run the Service, the application crushing. Please advice.


This is the "Main Class" code:



protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_screen);
MyAlarmManager.scheduleAlarms(this);


This is the AlarmManager code:



public class MyAlarmManager extends BroadcastReceiver {

private static final int PERIOD=1000*10; // 15 minutes
private static final int INITIAL_DELAY=500; // 5 seconds

@Override
public void onReceive(Context ctxt, Intent i) {
scheduleAlarms(ctxt);
}

static void scheduleAlarms(Context ctxt) {
AlarmManager mgr= (AlarmManager)ctxt.getSystemService(Context.ALARM_SERVICE);
Intent i=new Intent(ctxt, MyService.class);
PendingIntent pi=PendingIntent.getBroadcast(ctxt, 0, i, 0);
Log.i("Eyal Link", "Alarm Manager Started ......... Alarm Manager Started");

mgr.setRepeating(AlarmManager.RTC_WAKEUP, SystemClock.elapsedRealtime() + INITIAL_DELAY, PERIOD, pi);
}
}


This is the "Service" code:



public class MyService extends Service {
private NotificationManager mNM;
private final IBinder mBinder = new LocalBinder();
private int NOTIFICATION = R.string.service_started;

public class LocalBinder extends Binder {
SecRssService getService() {
return SecRssService.this;
}
}

@Override
public void onCreate() {
mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Log.i("My Log", "Received onCreate Service !!!!!!!!!!!!!!!!!!!");

showNotification();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("My Log", "Received onStartCommand id " + startId + ": " + intent);
Toast.makeText(this, R.string.service_started, Toast.LENGTH_SHORT).show();
showNotification();

// This service will continue running until it is explicitly stopped, so return sticky.
return START_STICKY;
}

@Override
public void onDestroy() {
// Cancel the persistent notification.
mNM.cancel(NOTIFICATION);
Toast.makeText(this, R.string.service_stopped, Toast.LENGTH_SHORT).show();
}

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

private void showNotification() {

CharSequence text = getText(R.string.service_started);

Notification noti = new Notification.Builder(getBaseContext())
.setContentTitle(getText(R.string.noto))
.setContentText("Test Notification ON")
.setSmallIcon(R.drawable.ic_launcher)
.build();
}
}


Please advise my where I'm wrong.


Thanks a lot.


0 comments:

Post a Comment