У меня есть приложение, в котором при «игровой» статистике запускается пара разных потоков. Я начинаю темы так:
Thread thread = new Thread(new Runnable()
{
public void run()
{
//...
}
});
thread.setName("killMeAtEnd");
thread.start();
Позже, когда игра заканчивается, у меня есть метод dispose () внутри игры, который сортирует все запущенные потоки и завершает все потоки с именем «killMeAtEnd». Мой вопрос, это хорошая практика? Мое намерение состоит в том, чтобы мое приложение работало быстро и не мешало работе. По моему опыту, «зависшие» потоки, как правило, замедляют работу телефона до тех пор, пока приложение не будет закрыто. Есть лучший способ сделать это? Стоит ли беспокоиться об этом?
EDIT:
Вот мой dispose()
, если кому-то было интересно. Этот код находится в классе Game.
public void dispose()
{
Thread threads[] = (Thread[])Thread.getAllStackTraces().keySet().toArray();
for(int x=0;x<threads.length;x++)
{
Thread thread = threads[x];
if(thread.getName().equalsIgnoreCase(KILL))
{
try
{
thread.interrupt();
}catch(Exception e){Log.e(Viewer.GAME,Log.getStackTraceString(e));}
thread = null;
}
}
}
public static final String KILL = "endOnDispose";