Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09273072 authored by Moez Bhatti's avatar Moez Bhatti
Browse files

Use IntentService instead of BroadcastReceiver

parent 42bb829a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -450,9 +450,9 @@
                <action android:name="com.mariussoft.endlessjabber.action.extend" />
            </intent-filter>
        </receiver>
        <receiver android:name=".receiver.AutoDeleteReceiver" />

        <service android:name="com.mariussoft.endlessjabber.sdk.EndlessJabberWakefulService" />
        <service android:name=".service.DeleteOldMessagesService" />

        <service
            android:name=".receiver.UnreadBadgeService"
+2 −1
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.preference.PreferenceManager;
import com.moez.QKSMS.service.DeleteOldMessagesService;
import com.moez.QKSMS.transaction.NotificationManager;
import com.moez.QKSMS.ui.settings.SettingsFragment;

@@ -16,6 +17,6 @@ public class BootReceiver extends BroadcastReceiver {

        SettingsFragment.updateAlarmManager(context, PreferenceManager.getDefaultSharedPreferences(context).getBoolean(SettingsFragment.NIGHT_AUTO, false));

        AutoDeleteReceiver.setupAutoDeleteAlarm(context);
        DeleteOldMessagesService.setupAutoDeleteAlarm(context);
    }
}
+42 −17
Original line number Diff line number Diff line
package com.moez.QKSMS.receiver;
package com.moez.QKSMS.service;

import android.app.AlarmManager;
import android.app.IntentService;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
@@ -13,11 +13,15 @@ import com.moez.QKSMS.transaction.SmsHelper;

import java.util.Calendar;

public class AutoDeleteReceiver extends BroadcastReceiver {
    private static final String TAG = "AutoDeleteService";
public class DeleteOldMessagesService extends IntentService {
    private static final String TAG = "DeleteOldMessages";

    public DeleteOldMessagesService() {
        super(TAG);
    }

    @Override
    public void onReceive(Context context, Intent intent) {
    protected void onHandleIntent(Intent intent) {
        Calendar last = Calendar.getInstance();
        last.setTimeInMillis(QKPreferences.getLong(QKPreference.LAST_AUTO_DELETE_CHECK));

@@ -30,30 +34,42 @@ public class AutoDeleteReceiver extends BroadcastReceiver {
            Log.i(TAG, "Ready to delete old messages");
            QKPreferences.setLong(QKPreference.LAST_AUTO_DELETE_CHECK, System.currentTimeMillis());

            getAutoDeleteCount(context);
            deleteOldUnreadMessages(this);
            deleteOldReadMessages(this);
        } else {
            Log.i(TAG, "Not going to delete old messages");
        }
    }

    public static void setupAutoDeleteAlarm(Context context) {
    private void deleteOldUnreadMessages(Context context) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY, 3); // We want this service to run when the phone is not likely being used
        calendar.add(Calendar.DAY_OF_YEAR, -Integer.parseInt(QKPreferences.getString(QKPreference.AUTO_DELETE_UNREAD)));

        Intent intent = new Intent(context, AutoDeleteReceiver.class);
        PendingIntent pIntent = PendingIntent.getBroadcast(context, 9237, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        Cursor cursor = null;
        String selection = SmsHelper.COLUMN_DATE + "<=?";

        AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pIntent);
        try {
            cursor = context.getContentResolver().query(
                    SmsHelper.SMS_CONTENT_PROVIDER,
                    new String[]{SmsHelper.COLUMN_ID, SmsHelper.COLUMN_DATE},
                    selection,
                    new String[]{String.valueOf(calendar.getTimeInMillis())},
                    null);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (cursor != null) {
                cursor.close();
            }
        }
    }

    private int getAutoDeleteCount(Context context) {
    private void deleteOldReadMessages(Context context) {
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DAY_OF_YEAR, -Integer.parseInt(QKPreferences.getString(QKPreference.AUTO_DELETE_READ)));

        Cursor cursor = null;
        int count = 0;
        String selection = SmsHelper.COLUMN_DATE + "<=?";

        try {
@@ -64,7 +80,6 @@ public class AutoDeleteReceiver extends BroadcastReceiver {
                    new String[]{String.valueOf(calendar.getTimeInMillis())},
                    null);

            count = cursor.getCount();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
@@ -72,7 +87,17 @@ public class AutoDeleteReceiver extends BroadcastReceiver {
                cursor.close();
            }
        }
    }

        return count;
    public static void setupAutoDeleteAlarm(Context context) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY, 3); // We want this service to run when the phone is not likely being used

        Intent intent = new Intent(context, DeleteOldMessagesService.class);
        PendingIntent pIntent = PendingIntent.getService(context, 9237, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        AlarmManager alarm = (AlarmManager) context.getSystemService(ALARM_SERVICE);
        alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pIntent);
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -30,8 +30,8 @@ import com.moez.QKSMS.common.google.DraftCache;
import com.moez.QKSMS.common.utils.MessageUtils;
import com.moez.QKSMS.data.Conversation;
import com.moez.QKSMS.enums.QKPreference;
import com.moez.QKSMS.receiver.AutoDeleteReceiver;
import com.moez.QKSMS.receiver.IconColorReceiver;
import com.moez.QKSMS.service.DeleteOldMessagesService;
import com.moez.QKSMS.transaction.NotificationManager;
import com.moez.QKSMS.transaction.SmsHelper;
import com.moez.QKSMS.ui.base.QKActivity;
@@ -102,7 +102,7 @@ public class MainActivity extends QKActivity {
        SnackEngage.from(this).withSnack(new QKRateSnack().withDuration(BaseSnack.DURATION_LONG))
                .build().engageWhenAppropriate();

        AutoDeleteReceiver.setupAutoDeleteAlarm(this);
        DeleteOldMessagesService.setupAutoDeleteAlarm(this);
    }

    /**