mirror of
https://github.com/moparisthebest/k-9
synced 2024-12-25 09:08:49 -05:00
Move execute into a re-usable location
This commit is contained in:
parent
11b7157772
commit
64525028de
@ -1,6 +1,8 @@
|
|||||||
package com.fsck.k9.service;
|
package com.fsck.k9.service;
|
||||||
|
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
@ -18,6 +20,7 @@ public abstract class CoreService extends Service
|
|||||||
public static String WAKE_LOCK_ID = "com.fsck.k9.service.CoreService.wakeLockId";
|
public static String WAKE_LOCK_ID = "com.fsck.k9.service.CoreService.wakeLockId";
|
||||||
private static ConcurrentHashMap<Integer, WakeLock> wakeLocks = new ConcurrentHashMap<Integer, WakeLock>();
|
private static ConcurrentHashMap<Integer, WakeLock> wakeLocks = new ConcurrentHashMap<Integer, WakeLock>();
|
||||||
private static AtomicInteger wakeLockSeq = new AtomicInteger(0);
|
private static AtomicInteger wakeLockSeq = new AtomicInteger(0);
|
||||||
|
private final ExecutorService threadPool = Executors.newFixedThreadPool(1); // Must be single threaded
|
||||||
|
|
||||||
protected static void addWakeLockId(Intent i, Integer wakeLockId)
|
protected static void addWakeLockId(Intent i, Integer wakeLockId)
|
||||||
{
|
{
|
||||||
@ -86,6 +89,41 @@ public abstract class CoreService extends Service
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void execute(Context context, final Runnable runner, int wakeLockTime, final Integer startId)
|
||||||
|
{
|
||||||
|
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
|
||||||
|
final WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "K9");
|
||||||
|
wakeLock.setReferenceCounted(false);
|
||||||
|
wakeLock.acquire(wakeLockTime);
|
||||||
|
if (K9.DEBUG)
|
||||||
|
Log.i(K9.LOG_TAG, "CoreService queueing Runnable " + runner.hashCode() + " with startId " + startId);
|
||||||
|
Runnable myRunner = new Runnable()
|
||||||
|
{
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
|
if (K9.DEBUG)
|
||||||
|
Log.i(K9.LOG_TAG, "CoreService running Runnable " + runner.hashCode() + " with startId " + startId);
|
||||||
|
runner.run();
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (K9.DEBUG)
|
||||||
|
Log.i(K9.LOG_TAG, "CoreService completed Runnable " + runner.hashCode() + " with startId " + startId);
|
||||||
|
wakeLock.release();
|
||||||
|
if (startId != null)
|
||||||
|
{
|
||||||
|
stopSelf(startId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
threadPool.execute(myRunner);
|
||||||
|
}
|
||||||
|
|
||||||
public abstract void startService(Intent intent, int startId);
|
public abstract void startService(Intent intent, int startId);
|
||||||
|
|
||||||
|
@ -37,8 +37,7 @@ public class MailService extends CoreService
|
|||||||
|
|
||||||
private static final String HAS_CONNECTIVITY = "com.fsck.k9.intent.action.MAIL_SERVICE_HAS_CONNECTIVITY";
|
private static final String HAS_CONNECTIVITY = "com.fsck.k9.intent.action.MAIL_SERVICE_HAS_CONNECTIVITY";
|
||||||
|
|
||||||
private final ExecutorService threadPool = Executors.newFixedThreadPool(1); // Must be single threaded
|
|
||||||
|
|
||||||
|
|
||||||
public static void actionReschedule(Context context, Integer wakeLockId)
|
public static void actionReschedule(Context context, Integer wakeLockId)
|
||||||
{
|
{
|
||||||
@ -428,42 +427,7 @@ public class MailService extends CoreService
|
|||||||
, K9.MAIL_SERVICE_WAKE_LOCK_TIMEOUT, startId);
|
, K9.MAIL_SERVICE_WAKE_LOCK_TIMEOUT, startId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void execute(Context context, final Runnable runner, int wakeLockTime, final Integer startId)
|
|
||||||
{
|
|
||||||
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
|
|
||||||
final WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "K9");
|
|
||||||
wakeLock.setReferenceCounted(false);
|
|
||||||
wakeLock.acquire(wakeLockTime);
|
|
||||||
if (K9.DEBUG)
|
|
||||||
Log.i(K9.LOG_TAG, "MailService queueing Runnable " + runner.hashCode() + " with startId " + startId);
|
|
||||||
Runnable myRunner = new Runnable()
|
|
||||||
{
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
|
|
||||||
if (K9.DEBUG)
|
|
||||||
Log.i(K9.LOG_TAG, "MailService running Runnable " + runner.hashCode() + " with startId " + startId);
|
|
||||||
runner.run();
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
if (K9.DEBUG)
|
|
||||||
Log.i(K9.LOG_TAG, "MailService completed Runnable " + runner.hashCode() + " with startId " + startId);
|
|
||||||
wakeLock.release();
|
|
||||||
if (startId != null)
|
|
||||||
{
|
|
||||||
stopSelf(startId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
threadPool.execute(myRunner);
|
|
||||||
}
|
|
||||||
|
|
||||||
public IBinder onBind(Intent intent)
|
public IBinder onBind(Intent intent)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
|
Loading…
Reference in New Issue
Block a user