我有一个Activity,它在不同的线程上运行许多单独的下载任务。他们正在像这样在onCreate()中创建
:public override void OnCreate()
{
base.OnCreate();
workerThread = new Thread(() =>
{
InitialiseDownloads();
foreach (DownloadingFile file in downloadingFiles)
{
Thread t = new Thread(file.StartDownload);
threads.Add(t);
t.Start();
}
});
workerThread.Start();
}
在List<Thread>
线程中,每个要下载的文件都有一个新线程。
如果在这些线程完成之前关闭了活动,那么如果我不放弃它们,它们将在杀死活动后继续运行吗?如果是这样,这是否合适:
public override void OnDestroy()
{
workerThread.Abort();
foreach (Thread thread in threads)
{
thread.Abort();
}
base.OnDestroy();
}
答案 0 :(得分:2)
无法保证Thread
被销毁后您的Activity
将被杀死。只要操作系统允许,它可能会在不久后被杀死,或者可以存活。更糟糕的是,如果您将Activity
泄漏到线程中,则只要线程正在运行,它就不会被破坏。
如果您希望即使Àctivity
被杀死,您的后台任务也可以保留,请使用Service
。为了确保它不会被操作系统杀死,您应该在前台-startForeground
中启动它。