主要代码如下
示例中为了让public void onLocaleChanged()切换语言时被调用,需要有以下代码
private HandlerThread mBackgroundThread;
private Handler mBackgroundHandler;
public boolean onCreate() {
mBackgroundThread = new HandlerThread("LocalGroupsProviderWorker",
Process.THREAD_PRIORITY_BACKGROUND);
mBackgroundThread.start();
mBackgroundHandler = new Handler(mBackgroundThread.getLooper()) {
@Override
public void handleMessage(Message msg) {
performBackgroundTask(msg.what, msg.obj);
}
};
}
private static final int BACKGROUND_TASK_CHANGE_LOCALE = 1;
private void performBackgroundTask(int task, Object arg) {
switch (task) {
case BACKGROUND_TASK_CHANGE_LOCALE: {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
mOpenHelper.createLocalGroupsTriggers(db);
updateDefaultLocalGroupName();
break;
}
default://do nothing
}
}
public void onLocaleChanged() {
mBackgroundHandler.sendEmptyMessage(BACKGROUND_TASK_CHANGE_LOCALE);
}
示例中为了让public void onLocaleChanged()切换语言时被调用,需要有以下代码
1、manifest中
<receiver android:name="LocaleChangeReceiver">
<intent-filter>
<action android:name="android.intent.action.LOCALE_CHANGED"/>
</intent-filter>
</receiver>
2、LocaleChangeReceiver.java中
public class LocaleChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
IContentProvider ilocalprovider =
context.getContentResolver().acquireProvider(LocalGroups.AUTHORITY);
ContentProvider localprovider = ContentProvider.coerceToLocalContentProvider(ilocalprovider);
if (localprovider instanceof LocalGroupsProvider) {
((LocalGroupsProvider)localprovider).onLocaleChanged();
}
}
}