Сервис: startervice может вызвать побочные эффекты, лучший способ использовать мессенджер и передавать данные.
private CallBackHandler mServiceHandler= new CallBackHandler(this);
private Messenger mServiceMessenger=null;
//flag with which the activity sends the data to service
private static final int DO_SOMETHING=1;
private static class CallBackHandler extends android.os.Handler {
private final WeakReference<Service> mService;
public CallBackHandler(Service service) {
mService= new WeakReference<Service>(service);
}
public void handleMessage(Message msg) {
//Log.d("CallBackHandler","Msg::"+msg);
if(DO_SOMETHING==msg.arg1)
mSoftKeyService.get().dosomthing()
}
}
Упражнение: Get Messenger from Intent залейте его данными и передайте сообщение обратно в службу
private Messenger mServiceMessenger;
@Override
protected void onCreate(Bundle savedInstanceState) {
mServiceMessenger = (Messenger)extras.getParcelable("myHandler");
}
private void sendDatatoService(String data){
Intent serviceIntent= new
Intent(BaseActivity.this,Service.class);
Message msg = Message.obtain();
msg.obj =data;
msg.arg1=Service.DO_SOMETHING;
mServiceMessenger.send(msg);
}
Большинство блочных шифров собирается использовать больше, чем 32-разрядные размерные блоки из соображений безопасности.
Однако я нашел тот, который сделан специально для того, что Вы делаете: Skip32
можно рассмотреть использование GUID, но возможно у Вас есть причины, Вы хотите избежать этого. (Скажите, Ваше приложение уже сделано.)
Редактирование: На самом деле, если GUID допустим, то это дает Вам диапазон 128 битов. Вы могли легко использовать любой другой блочный шифр. Преимущество для наличия большего пространства (за счет долгих Строк идентификатора) - то, что у Вас будет намного больше защиты от людей, предполагающих идентификаторы. (Не то, чтобы это ID заказа отдельно должен быть маркер безопасности так или иначе...)
Если Ваша идея состоит в том, что просто знания номера заказа (или URL) достаточно для получения информации о порядке затем:
Так, для удобства одного щелчка check-my-order-without-logging-in, Вы создали постоянную угрозу безопасности.
Даже при создании пространства номера заказа огромным у Вас все еще есть проблема, которую те URL пускают в ход вокруг туда, возможно, владеющий людьми, которые не должны были получать их.
было бы намного намного лучше потребовать сессии входа в систему для наблюдения чего-либо, затем только покажите им заказы, которые они разрешены видеть. Затем Вы не должны волноваться о скрывающихся номерах заказа или взломщиках, предполагающих номера заказа, потому что просто номер заказа не является достаточной информацией для доступа к чему-либо.
Я моделировал эту идею с помощью Шифра, блочного шифра с 64-разрядными блоками.
гуид является способом пойти для того
* редактирование *
, Вы могли бы хотеть посмотреть на этот http://csharpfeeds.com/post/4382/A_shorter_and_URL_friendly_GUID.aspx
Я не думаю, что эта схема является настолько замечательной из идеи. Почему Вы не проверяющий, что пользователь зарегистрирован и имеет доступ для просмотра указанного порядка?
, Если бы Вы ДЕЙСТВИТЕЛЬНО хотите просто иметь все заказы там без какой-либо аутентификации, GUID был бы лучшим.
Или, Вы могли попытаться придумать номера заказа, снабженные префиксом что-то о клиенте. Как (PhoneNumber) (1... 100)
Для соответствия требованию, Вы могли просто использовать хеш такой в качестве SHA-1 или MD5 на Ваших индексах. Они обеспечат достаточный уровень безопасности, которого Вы требуете.
Для перевода в нерабочее состояние размера можно измениться на другое кодирование; такой как 64 бита.
я также <ударил> бы, очень настоятельно рекомендуют , забастовка> настаивают на использовании соли, иначе значения хэш-функции могли легко быть повреждены.