2013-03-11 2 views
2

Я новичок в программировании на Android, я пытаюсь разработать приложение, которое используется для установки аварийных сигналов. Поскольку AlarmManager потеряет все аварийные сигналы при перезагрузке системы, я сохранил все созданные пользователем сигналы тревоги, используя SharedPreferences.SharedPreferences, не обновляющийся в onResume()

У меня есть основное действие, в котором перечислены все тревоги. У меня есть активность alarm_create, которая создает тревоги. alarm_receiver класс называется PendingIntent, когда тревога продолжается.

Теперь, даже если alarm_receiver вносит изменения в сигнал тревоги, он не отражается в main_activity при возобновлении приложения.

Для сохранения тревоги я использовал концепцию очереди, которая помогла бы мне получить сигналы тревоги в цикле.

Пожалуйста, помогите мне с проблемой.

+0

обновите свой код, который вы пробовали. –

+0

Вы сохранили сигнал тревоги в методе onPause всех действий, которые меняют тревогу? (см. жизненный цикл работы: http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle) – Laviniux

+0

Показать свой код. Просто объяснение того, что вы пытаетесь сделать, не показывая никакого кода, не помогает никому помочь вам. – Squonk

ответ

0

На самом деле, SharedPreferences не обновляются мгновенно, он обновляется, когда приложение перезапускается.

К сожалению, перезагрузка приложения не так проста для кодирования на Android и не подходит для вашего приложения.

Вышеприведенный ответ DecodeGnome может использоваться для переустановки списка или перезагрузки аварийного сигнала приложения.

Я предлагаю вам перейти на SQLiteDatabase класс и сохранить аварийные сигналы в базе данных SQLite, так как каждое Android-устройство имеет SQLiteDatabase.

Вы можете увидеть ссылочный код here.

0

Ниже приведен фрагмент код, который мы используем, чтобы сохранить sharedPreferences

Editor prefsEditor = preferences.edit(); 
prefsEditor.putString(CONFIG_INFO_KEY, configInfoJson); 
prefsEditor.commit(); 

Надеется, что это помогает

+0

У меня такая же проблема. –

+1

Я использовал вышеупомянутый метод .. но его не работает. –

+0

Joe2013 .. как вы предлагаете, я сделал то же самое, но проблема, с которой я столкнулась, - это когда приложение возвращается к другому действию после обновления значения, эта конкретная активность не получает обновленных значений SharedPreferences. :( –

1

Im не совсем уверен, я понимаю, что именно вы хотите, но, как я понимаю, вы хотите установить аварийные сигналы снова после перезагрузки устройства.

1) Создайте Ресивер, ожидающего перезагрузки:

public class BootReciever extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     SharedPreferences settings = context.getSharedPreferences("YOUR SHAREDPREF NAME", 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putString("alarmName", "newAlarm"); 
     editor.commit(); // Don't forget to commit your changes! 

    } 
} 

2) Добавьте его в AndroidManifest.xml:

<receiver android:name="com.yourpackage.BootReciever"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED"/> 
     </intent-filter> 
    </receiver> 

3) Добавить разрешение:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
+0

точно я ищу для восстановления сохраненных значений SharedPrefences без перезапуска приложения. –

+0

Thnx для этого я искал это тоже –

+0

Обновлен мой ответ :) Не забудьте editor.commit(); и не забудьте получить значения (в вашей основной_активности) из тех же SharedPreferences (с тем же именем). Если это не поможет, вам придется опубликовать свой код, чтобы мы могли понять, что происходит. – DecodeGnome

Смежные вопросы