2017-03-17 103 views
2

我想設置一些標誌,我的應用程序可以檢查何時發生某些情況。我希望這個「標誌」在系統重啓時自動移除。我需要這個標誌來堅持多個應用程序重新啓動。Android設置臨時屬性

我的第一次嘗試是嘗試System.setProperty("flag", "true"),但我發現當我在應用程序重新啓動後執行System.getProperty()時,此標誌不再設置。

我的另一個想法是當條件發生時創建一個文件。然後當應用程序重新啓動時,我可以檢查這個文件是否存在。當系統重新啓動時,我可以使用BootReceiver清除文件。這個問題是,在執行BootReceiver之前可能會檢查這個文件,這不是我想要的。

有沒有更簡單的機制我可以使用你能想到的?我查看了SharedPreferences和使用緩存文件的內部存儲,但我認爲它們不會起作用。

回答

0

我會使用啓動廣播接收器和SharedPreferences。 系統引導時,重置您的變量並將其保存到SharedPreferences。

添加這體現:

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

而且這樣的:

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

最後你需要創建廣播接收器:

public class BootReciever extends BroadcastReceiver { 
    public void onReceive(Context context, Intent intent) { 
     mSharedPreferences.putBoolean("yourVariable", true).apply(); 
    } 
} 
+0

我嘗試這樣做。閱讀第三段。問題在於檢查標誌位於應用程序的開始位置,並且可能在BootReceiver執行之前發生。 – artvandelay

+0

我的不好,抱歉,但我認爲這是製作它的唯一方法(沒有root權限),能否請您解釋在從啓動接收器獲取信號之前如何進行此檢查? – mayosk

+0

檢查發生在Application.onCreate()中,它在BootReceiver之前執行。 – artvandelay