2013-10-21 3 views
5

Ich habe eine Klasse mit strengen Methoden, die Daten aus einer SQLite-Datenbank extrahieren. Ich möchte die Benutzer dieser Klasse zwingen, diese Methoden in einem Thread oder einer Asyntask aufzurufen.Wie eine Ausnahme auszulösen, wenn eine Methode aus Hauptthread ausgeführt wird

Wie kann ich verhindern, dass eine Methode auf dem Hauptthread ausgeführt wird?

Ich möchte etwas ähnliches wie die android.os.NetworkOnMainThreadException erreichen, wenn Sie versuchen, einige Netzwerke auf dem ui-Thread zu tun.

Antwort

0

siehe Looper Dokumentation zu überprüfen, ob Sie in dem UI-Thread ausgeführt werden oder nicht

3
if (Looper.getMainLooper().equals(Looper.myLooper())) { 
    throw new MyException("Don't do it on the UI thread"); 
} 

dies versuchen sollte es funktionieren. Natürlich erstellen Sie Ihre eigene Ausnahme oder verwenden Sie eine bestehende Ausnahme.

4

Von Google Volley Bibliothek:

private void throwIfOnMainThread() { 
     if (Looper.myLooper() == Looper.getMainLooper()) { 
      throw new IllegalStateException("Must not be invoked from the main thread."); 
     } 
    } 
Verwandte Themen