在我開發的應用程序中,我有一個正在循環運行的線程。在循環內部,幾個條件被評估,並且取決於這些條件,一個值或另一個值被存儲在SharedPreferences中。提交清除中斷狀態
public void run()
{
try
{
SharedPreferences preferences =
context.getSharedPreferences("MyPrefs", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
while (true)
{
if (condition1)
{
editor.putBoolean("mykey", "1");
}
else if (condition 2)
{
editor.putBoolean("mykey", "2");
}
editor.commit();
if (isInterrupted())
throw new InterruptedException();
Thread.sleep(60000); // 60 seconds
}
}
catch (InterruptedException e)
{
Thread.currentThread().interrupt();
}
}
此線程由onResume方法中的Activity啓動,並在onPause方法中中斷。
如果線程是由活動(主線程),當它處於睡眠狀態中斷,一個InterruptedException異常。那沒問題。
但我的問題是,如果活動(主線程)在線程運行(而不是睡眠)時中斷線程。 「中斷標誌」被設置爲true,但是在調用編輯器上的提交之後,該標誌被設置爲false,所以我不能中斷拋出InterruptedException的線程。
我該怎麼辦?
感謝
非常感謝您的回答。我會做你說的。我不明白的是爲什麼「editor.commit」不會拋出InterruptedException而不是清除掛起的中斷。 – Eduardo