Приклад потокової роботи в Android [закрито]


74

Я хочу простий приклад створення потоку та виклику потоків в android.


Ви також можете посилатися на цю публікацію: stackoverflow.com/questions/9148899/returning-value-from-thread
Равіндра Бабу,

Відповіді:


88

Це гарний підручник:

http://android-developers.blogspot.de/2009/05/painless-threading.html

Або це для потоку інтерфейсу користувача:

http://developer.android.com/guide/faq/commontasks.html#threading

Або тут дуже практичний:

http://www.androidacademy.com/1-tutorials/43-hands-on/115-threading-with-android-part1

і ще один про процеси та потоки

http://developer.android.com/guide/components/processes-and-threads.html


8
Перші два посилання не працюють .. Для першого посилання спробуйте посилання Для другого посилання спробуйте посилання
Декстер

5
Відповідь майже 1,5-річна. Я намагаюся оновити посилання.
RoflcoptrException

ти справді приємний, що відповів на неконкретне запитання на кшталт цього
A Person

Я б не погодився, що це неспецифічне питання: воно вимагає від громади конкретного типу прикладів, з особливою увагою.
WillC

10

Однією з потужних функцій Android є клас AsyncTask .

Щоб працювати з нею, потрібно спочатку розширити її та замінити doInBackground(...). doInBackgroundавтоматично виконується на робочому потоці, і ви можете додати кілька слухачів на UI тему , щоб отримати повідомлення про оновлення статусу, називаються ті функції: onPreExecute(), onPostExecute()іonProgressUpdate()

Ви можете знайти приклад тут .

Інші альтернативи див. У дописі нижче:

Обробник проти AsyncTask проти потоку


.. Я впевнений, що ваше посилання мертве.
While-E

@ While-E, боюся, ти маєш рацію
Ендіан Огіно,

2
Я щойно оновив посилання. Блог переїхав у це нове місце: посилання
slybloty

8

Ось простий приклад різьблення для Android. Це дуже елементарно, але це повинно допомогти вам отримати перспективу.

Код Android - Main.java

package test12.tt;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class Test12Activity extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final TextView txt1 = (TextView) findViewById(R.id.sm);

        new Thread(new Runnable() { 
            public void run(){        
            txt1.setText("Thread!!");
            }
        }).start();

    }    
}

Додаток для Android xml - main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView  
    android:id = "@+id/sm"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"/>

</LinearLayout>

49
Мені це здається неправильним прикладом, оскільки оновлення інтерфейсу робиться з фонового потоку.
Frank Harper

1
Якщо ви оновлюєте потік інтерфейсу користувача, вам слід використовувати обробник, оскільки це середній шар між потоком інтерфейсу користувача та вашим потоком
спауну

2
developer.android.com/guide/components/… точно відбиває такий тип програмування, оскільки він порушує правило "Не отримувати доступ до набору інструментів інтерфейсу користувача Android за межами потоку інтерфейсу користувача"
Серкан Арікушу

1
Я майже впевнений, що в останніх версіях Android це навіть іноді не працює так.
Giszmo

1
Це порушує друге правило однопотокової моделі: не отримувати доступ до набору інструментів Android UI поза потоком інтерфейсу користувача
ThePatelGuy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.