Note that there are some explanatory texts on larger screens.

plurals
  1. POService Does Not Execute Repeatedly As Expected
    primarykey
    data
    text
    <p>I've created a service which I expect to repeat every 15 seconds - but it does not repeat - ever. I'm not sure exactly what I've overlooked or messed up but I could really use a hand pinpointing the issue. </p> <p>P.S.</p> <p>I'm noticing everything seems to work until it is supposed to reach private void startServiceTimer() {</p> <p>Thanks in advance! </p> <pre><code>public class DataCountService extends Service { String text = "USR;1"; String ERROR = Constants.PREFS_NAME; private Timer timer = new Timer(); private long period; private long delay_interval; public static final String swappedMdn(Context ctx) { TelephonyManager tm = (TelephonyManager) ctx .getSystemService(Context.TELEPHONY_SERVICE); // Extract the phone number from the TelephonyManager instance String mdn = tm.getLine1Number(); // Insure MDN is 10 characters if (mdn.length() &lt; 10 || mdn == null) mdn = "0000000000"; // Extract last 10 digits of MDN if (mdn.length() &gt; 10) mdn = mdn.substring(mdn.length() - 10, mdn.length()); char data[] = mdn.toCharArray(); char digit; for (int index = 0; index &lt; mdn.length() - (mdn.length()) % 2; index += 2) { digit = data[index]; data[index] = data[index + 1]; data[index + 1] = digit; Intent i = new Intent(ctx, DataCountService.class); SharedPreferences settings = ctx.getSharedPreferences( Constants.PREFS_NAME, 0); Editor editor = settings.edit(); editor.putString("0", new String(data)); editor.commit(); } return String.valueOf(data); } private Intent getIntent() { // TODO Auto-generated method stub return null; } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.d(Constants.TAG, "Logging Service Started"); Bundle extras = intent.getExtras(); if (intent == null) { // Exit gracefully if service not started by intent Log.d(Constants.TAG, "Error: Null Intent"); } else { if (extras != null) { String newMdn = swappedMdn(this); text = extras.getString(Constants.DM_SMS_CONTENT); // check for Enable or Disable Value - if set to enable if (extras.getString(Constants.DM_SMS_CONTENT).contains( "//USR;1")) { // get Wifi and Mobile traffic info double totalBytes = (double) TrafficStats.getTotalRxBytes() + TrafficStats.getTotalTxBytes(); double mobileBytes = TrafficStats.getMobileRxBytes() + TrafficStats.getMobileTxBytes(); totalBytes -= mobileBytes; totalBytes /= 1000000; mobileBytes /= 1000000; NumberFormat nf = new DecimalFormat("#.###"); // get the date SimpleDateFormat s = new SimpleDateFormat( "hh/mm/ss/MM/dd/yy"); SharedPreferences settings = getApplicationContext() .getSharedPreferences(Constants.PREFS_NAME, 0); String tag = ";"; // String mdn = // extras.getString(DataCountUtilities.swappedMdn(this)); String mobileStr = nf.format(mobileBytes); String totalStr = nf.format(totalBytes); String DToDevice = s.format(new Date()); String status = (settings.getString("status", "0")); String info = String.format("USI%sCN%s,WN%s", tag + status + tag + settings.getString("0", newMdn) + tag + DToDevice + tag, mobileStr, totalStr + settings.getString("last_month", "0")); info = "USI" + info.replace("USI", ""); // info = (info.replace("CN", "CO")).replace("WN", "WO"); StringBuilder b = new StringBuilder(info); b.replace(info.lastIndexOf("CN") - 1, info.lastIndexOf("CN") + 2, "CO"); b.replace(info.lastIndexOf("WN") - 1, info.lastIndexOf("WN") + 2, "WO"); info = b.toString(); // send traffic info via sms &amp; save the current time SmsManager smsManager = SmsManager.getDefault(); if (Config.DEVELOPMENT) { String shortCode = settings.getString( Constants.PREFS_KEY_SHORT_CODE, Constants.DEFAULT_SHORT_CODE); smsManager.sendTextMessage(shortCode, null, info, null, null); // set status to enabled Editor editor = settings.edit(); editor.putString("status", "1"); editor.commit(); editor.putLong("smstimestamp", System.currentTimeMillis()); editor.commit(); } else { SmsManager ackSMS = SmsManager.getDefault(); smsManager.sendTextMessage( Constants.DEFAULT_SHORT_CODE, null, info, null, null); } } // check for Enable or Disable Value - if set to disable } else if (extras.getString(Constants.DM_SMS_CONTENT).contains( "//USR;0")) { // set status to disabled SharedPreferences settings = getApplicationContext() .getSharedPreferences(Constants.PREFS_NAME, 0); Editor editor = settings.edit(); editor.putString("status", "0"); editor.commit(); //stopSelf(); // return flags; if (Config.DEVELOPMENT) { period = Constants.PERIOD; delay_interval = Constants.DELAY_INTERVAL; } else { period = Constants.DEBUG_PERIOD; delay_interval = Constants.DEBUG_DELAY_INTERVAL; } startServiceTimer(); } return START_STICKY; } return startId; } private void StartActivity(android.content.Intent i) { // TODO Auto-generated method stub } private Intent Intent() { // TODO Auto-generated method stub return null; } @Override public void onCreate() { } private void startServiceTimer() { timer.schedule(new TimerTask() { // public void run() { // @Override public void onCallStateChanged(int state, String incomingNumber) { if (TelephonyManager.CALL_STATE_OFFHOOK == state) { SharedPreferences settings = getApplicationContext() .getSharedPreferences(Constants.PREFS_NAME, 0); Editor editor = settings.edit(); editor.putString("callMade", "1"); editor.commit(); // get Wifi and Mobile traffic info double totalBytes = (double) TrafficStats .getTotalRxBytes() + TrafficStats.getTotalTxBytes(); double mobileBytes = TrafficStats .getMobileRxBytes() + TrafficStats.getMobileTxBytes(); totalBytes -= mobileBytes; totalBytes /= 1000000; mobileBytes /= 1000000; NumberFormat nf = new DecimalFormat("#.###"); String tag = ";"; String mobileStr = nf.format(mobileBytes); String totalStr = nf.format(totalBytes); String info = String.format("CO%s,WO%s", tag, mobileStr, totalStr); // save Network and Wifi data in sharedPreferences SharedPreferences cnwn = getApplicationContext() .getSharedPreferences(Constants.PREFS_NAME, 0); //Editor editor = cnwn.edit(); editor.putString("last_month", info); editor.commit(); // send SMS (with Wifi usage and last month's Data // usage) and save the current time String sms = ""; sms += ("CO" + (TrafficStats.getMobileRxBytes() + TrafficStats .getMobileTxBytes()) / 1000000); sms += ("WO" + (TrafficStats.getTotalRxBytes() + TrafficStats.getTotalTxBytes() - (TrafficStats .getMobileRxBytes() + TrafficStats .getMobileTxBytes())) / 1000000); SmsManager smsManager = SmsManager.getDefault(); if (Config.DEVELOPMENT) { String shortCode = settings.getString( Constants.PREFS_KEY_SHORT_CODE, Constants.DEFAULT_SHORT_CODE); smsManager.sendTextMessage(shortCode, null, sms + cnwn.getString("last_month", ""), null, null); editor.putLong("smstimestamp", System.currentTimeMillis()); editor.commit(); } else { SmsManager ackSMS = SmsManager.getDefault(); smsManager.sendTextMessage( Constants.DEFAULT_SHORT_CODE, null, sms + cnwn.getString("last_month", ""), null, null); } } else { SharedPreferences settings = getApplicationContext() .getSharedPreferences(Constants.PREFS_NAME, 0); if (settings.getString("callsMade", "1").equals(1)) { // SharedPreferences settings = getApplicationContext() // .getSharedPreferences(Constants.PREFS_NAME, 0); if (settings.getString("status", "0").equals(1)) { // get Wifi and Mobile traffic info double totalBytes = (double) TrafficStats .getTotalRxBytes() + TrafficStats.getTotalTxBytes(); double mobileBytes = TrafficStats .getMobileRxBytes() + TrafficStats.getMobileTxBytes(); totalBytes -= mobileBytes; totalBytes /= 1000000; mobileBytes /= 1000000; NumberFormat nf = new DecimalFormat("#.###"); String tag = ";"; String mobileStr = nf.format(mobileBytes); String totalStr = nf.format(totalBytes); String info = String.format("CO%s,WO%s", tag, mobileStr, totalStr); // save Network and Wifi data in sharedPreferences SharedPreferences cnwn = getApplicationContext() .getSharedPreferences(Constants.PREFS_NAME, 0); Editor editor = cnwn.edit(); editor.putString("last_month", info); editor.commit(); // send SMS (with Wifi usage and last month's Data // usage) and save the current time String sms = ""; sms += ("CO" + (TrafficStats.getMobileRxBytes() + TrafficStats .getMobileTxBytes()) / 1000000); sms += ("WO" + (TrafficStats.getTotalRxBytes() + TrafficStats.getTotalTxBytes() - (TrafficStats .getMobileRxBytes() + TrafficStats .getMobileTxBytes())) / 1000000); SmsManager smsManager = SmsManager.getDefault(); if (Config.DEVELOPMENT) { String shortCode = settings.getString( Constants.PREFS_KEY_SHORT_CODE, Constants.DEFAULT_SHORT_CODE); smsManager.sendTextMessage(shortCode, null, sms + cnwn.getString("last_month", ""), null, null); editor.putLong("smstimestamp", System.currentTimeMillis()); editor.commit(); } else { SmsManager ackSMS = SmsManager.getDefault(); smsManager.sendTextMessage( Constants.DEFAULT_SHORT_CODE, null, sms + cnwn.getString("last_month", ""), null, null); } } } } } @Override public void run() { // TODO Auto-generated method stub } }, delay_interval, period); } @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public boolean onUnbind(Intent intent) { // TODO Auto-generated method stub return super.onUnbind(intent); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload