Bug 674725 - Part AB - Create a thread to handle SMS IO on Android. r=cjones

This commit is contained in:
Mounir Lamouri 2011-12-19 11:16:39 +01:00
Родитель 92c7e7f541
Коммит 3b9cbe81d3
2 изменённых файлов: 36 добавлений и 0 удалений

Просмотреть файл

@ -421,6 +421,8 @@ abstract public class GeckoApp
mSmsReceiver = new GeckoSmsManager();
registerReceiver(mSmsReceiver, smsFilter);
GeckoSmsManager.init();
if (!checkAndSetLaunchState(LaunchState.PreLaunch,
LaunchState.Launching))
return;
@ -574,6 +576,8 @@ abstract public class GeckoApp
{
Log.i(LOG_FILE_NAME, "destroy");
GeckoSmsManager.shutdown();
// Tell Gecko to shutting down; we'll end up calling System.exit()
// in onXreExit.
if (isFinishing())

Просмотреть файл

@ -55,6 +55,8 @@ import android.content.ContentUris;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
@ -226,6 +228,28 @@ class Postman
}
}
class SmsIOThread extends Thread {
private final static SmsIOThread sInstance = new SmsIOThread();
private Handler mHandler;
public static SmsIOThread getInstance() {
return sInstance;
}
public boolean execute(Runnable r) {
return mHandler.post(r);
}
public void run() {
Looper.prepare();
mHandler = new Handler();
Looper.loop();
}
}
public class GeckoSmsManager
extends BroadcastReceiver
{
@ -244,6 +268,10 @@ public class GeckoSmsManager
public final static int kUnknownError = 2;
public final static int kInternalError = 3;
public static void init() {
SmsIOThread.getInstance().start();
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_SMS_RECEIVED)) {
@ -485,4 +513,8 @@ public class GeckoSmsManager
return -1;
}
}
public static void shutdown() {
SmsIOThread.getInstance().interrupt();
}
}