簡體   English   中英

在Android中強制關閉線程

[英]Force Closing Thread in Android

在我的android應用程序中,我正在使用線程下載一些數據。

這是當前工作代碼的原型:

void startThread()
{
    thread = new Thread(this);
    thread.setPriority(Process.THREAD_PRIORITY_BACKGROUND);
    thread.start();
}

@Override
public void run()
{
    while(application_running)
    {
        //download my data... (on slow server response, execution gets stuck here)
    }
}

從服務器下載數據時,速度很慢。 盡管我關閉了該應用程序: 數據下載線程仍然有效 但是我需要在應用程序關閉后立即關閉該線程。

有什么辦法強制關閉它嗎? 還是任何其他標准的數據下載方式?

使用與您的活動(或片段)生命周期相關聯的AsyncTask。

http://developer.android.com/reference/android/os/AsyncTask.html

假設您有一個名為t的AsyncTask成員變量,並且該變量已經在Activity或Fragment中的其他位置啟動,則可以在onDestroy()中執行以下操作:

    if ((t != null) && !t.isCancelled())
    {
        boolean mayInterruptIfRunning = true;
        t.cancel(mayInterruptIfRunning);
        t = null;
    }

使用AsyncTask的好處還在於,您可以通過覆蓋onProgressUpdate和onPostExecute方法安全地在UI線程上更新UI以進行進度報告,並且一旦完成后台任務即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM