在我正在开发的应用程序中,我有一个循环运行的线程。在循环内部,会评估几个条件,并根据这些条件,将一个值或另一个值存储在 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,但在编辑器上调用commit后,该标志设置为false,所以我无法中断抛出InterruptedException的线程。
我能做些什么?
谢谢