Inhaltsverzeichnis
Dynamische Einstellung
特别注意的坑
singleInstance返回任务栈
singleTask多任务栈启动问题
singleTask的TaskAffinity与allowTaskReparenting参数
Heim WeChat-Applet Mini-Programmentwicklung Werfen wir einen Blick auf den Aktivitätsstartmodus

Werfen wir einen Blick auf den Aktivitätsstartmodus

Dec 10, 2020 pm 05:10 PM
小程序

Mini-Tutorial zur ProgrammentwicklungFührt hauptsächlich relevante Informationen zum Aktivitätsstartmodus ein

Werfen wir einen Blick auf den Aktivitätsstartmodus

Empfohlen (kostenlos): Mini-Tutorial zur Programmentwicklung

Vorwort

Wenn wir eine Aktivität starten, tun wir normalerweise einfach Starten Sie es direkt startActivity achtet möglicherweise nicht auf den Startmodus der Aktivität. Standardmäßig wird sie im Standardstartmodus gestartet. Aber manchmal ist der Startmodus wichtiger. Wenn Sie beispielsweise möchten, dass eine Aktivität nur einmal gestartet wird und nicht über mehrere Instanzen verfügt, müssen Sie sie möglicherweise auf den SingleTask-Modus festlegen. Daher ist es notwendig, diese Startmodi zu verstehen. Bitte beachten Sie, dass sich der Startmodus auf den Startmodus und den impliziten Start bezieht. Ich werde sie später in einem speziellen Artikel erklären.

Einführung in den Aufgabenstapel

Um den Startmodus zu verstehen, müssen Sie zunächst das Konzept des Aufgabenstapels verstehen. Ich werde hier nicht näher auf das Implementierungsprinzip des Task-Stacks eingehen. Hier werde ich kurz vorstellen, was ein Task-Stack ist. Die von uns gestarteten Aktivitätsinstanzen werden in einem sogenannten Aufgabenstapel abgelegt. Wir alle wissen, dass der Stapel die Eigenschaft „Last In, First Out“ hat. Der Aufgabenstapel ist beispielsweise eine Badmintonröhre und die Aktivitätsinstanzen sind einzeln Badminton. Die zuletzt eingelegten können nur zuerst herausgenommen werden. Wenn wir also eine App starten, wird automatisch ein Aufgabenstapel erstellt, in den wir dann Aktivitätsinstanzen werfen. Wenn wir die Eingabetaste drücken, um die Aktivitäten zu zerstören, werden diese Aktivitäten der Reihe nach aus dem Aufgabenstapel entfernt. Natürlich kann eine App mehrere Aufgabenstapel haben. Beispielsweise befindet sich eine mit singleInstence gestartete Aktivität in einem unabhängigen Aufgabenstapel. Nachdem wir das Konzept des Aufgabenstapels verstanden haben, können wir einen Blick auf die vier Startaktivitätsmodi werfen.

Analyse der vier Startmodi der Aktivität

Standard

Dies ist der Standard-Startmodus und standardmäßig dieser Startmodus. Jedes Mal, wenn eine Aktivität in diesem Startmodus gestartet wird, wird eine neue Instanz erstellt und auf dem Stapel platziert, unabhängig davon, ob dieselbe Instanz bereits im Stapel vorhanden ist. Dies ist auch am einfachsten zu verstehen.

singleTop

Wie der Name schon sagt, ist die Spitze des Stapels eine einzelne Instanz. Was bedeutet es? Angenommen, Sie starten jetzt eine ActivityA, aber zu diesem Zeitpunkt befindet sich bereits eine ActivityA-Instanz oben auf dem Stapel, sodass zu diesem Zeitpunkt keine neue Instanz erstellt wird. Wenn jedoch dieselbe Instanz oben im Stapel vorhanden ist, wird trotzdem eine neue Instanz erstellt. Die aktuelle Aktivität im Stapel ist beispielsweise ABC, wobei A oben im Stapel steht. Wenn A zu diesem Zeitpunkt gestartet wird, wird keine weitere A-Aktivität erstellt, aber die onNewIntent-Methode von A wird ausgeführt. Wenn jedoch zu diesem Zeitpunkt die C-Aktivität gestartet wird, wird ein neues C erstellt, da A nicht C oben auf dem Stapel ist Die Instanz wird weiterhin erstellt, die Stapelsituation ist zu diesem Zeitpunkt CABC.

singleTask

Einzelaufgabenmodus. Dieser Modus bedeutet, dass im Startstapel der Aktivität nur eine einzige Instanz vorhanden sein kann, unabhängig davon, ob sie sich oben im Stapel befindet oder nicht. Im Gegensatz zu anderen Startmodi kann dieser Startmodus den zu startenden Stapel angeben. Beispielsweise gibt es einen Stack Main, aber Sie können für Aktivität A einen Stacknamen dev angeben. Wenn A dann gestartet wird, wird ein Stack namens dev erstellt. SingleTask bedeutet also, dass beim Starten einer Aktivität im Startmodus „singleTask“ eine neue Instanz erstellt und in den Stapel eingefügt wird, wenn dieselbe Instanz im angegebenen Stapel vorhanden ist. Zum Beispiel befindet sich ABC im Stapel, und dann starten Sie B. Zu diesem Zeitpunkt erstellen Sie keine neue B-Instanz, sondern legen B oben auf den Stapel, schieben A heraus und führen dann die onNewIntent-Methode von B aus Diesmal ist die Stapelsituation BC.
Aufmerksame Leser werden „Push Out“ finden. Ja, wir alle wissen, dass beim Stapeln der letzte Spieler zuerst herauskommt. Wenn Sie beispielsweise drei Badmintonspieler in die Röhre legen, können Sie nur den obersten zuerst herausziehen Grund: Wenn Sie B an die Spitze des Stapels heben möchten, müssen Sie A herausschieben. Viele Leser denken möglicherweise fälschlicherweise, dass es sich nach dem Start um BAC handelt, in Wirklichkeit handelt es sich jedoch um BC, da A zuerst aus dem Stapel herausspringen muss, bevor B herauskommen kann. Wenn sich ADFBC im Stapel befindet, ist dieses Startup B ebenfalls BC, und alles darüber wird vom Stapel entfernt.

singleInstance

Einzelfallmodus. Dies ist eine erweiterte Version von singleTask. Er erstellt selbst einen neuen Stapel und legt diese neue Instanz darin ab. Dieser Stapel kann nur diese aktive Instanz enthalten. Wenn diese Aktivität also wiederholt gestartet wird, wird die onNewIntent-Methode dieser Aktivität aufgerufen und auf diesen Stapel umgeschaltet, solange sie existiert, und es wird keine neue Instanz erstellt.

Zwei Methoden zum Festlegen des Startmodus

Nachdem wir nun die vier Startmodi für Aktivitäten verstanden haben, sehen wir uns an, wie der Startmodus dafür festgelegt wird.

Statische Einstellung

Statische Einstellung dient dazu, den Startmodus für bestimmte Aktivitäten in AndroidManifest festzulegen. Legen Sie den Startmodus fest, indem Sie den Parameter launchMode für die Aktivität angeben. Zum Beispiel:

 <activity android:name=".MainActivity"
      android:launchMode="singleInstance"/>
Nach dem Login kopieren

Dynamische Einstellung

Dynamische Einstellung dient dazu, den Startmodus beim Starten der Aktivität anzugeben, zum Beispiel:

Intent intent = new Intent();
intent.setClass(this,SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Nach dem Login kopieren

可以看到我们通过intent.addFlags这个方法来指定启动模式,这个方法传入一个参数来指定启动模式,其他的参数有:

  • FLAG_ACTIVITY_NEW_TASK:singleTask模式
  • FLAG_ACTIVITY_SINGLE_TOP:singleTop模式
  • FLAG_ACTIVITY_CLEAR_TOP:清除该活动上方的所有活动。一般和singleTask一起使用。但是如果你的启动模式是standard,那么这个活动连他之上的所有活动都会被出栈再创建一个新的实例放进去。例如现在栈中是ABCD,以FLAG_ACTIVITY_CLEAR_TOP+standard模式启动C的时候,首先清理掉ABC,是的,C也会被清理,然后再创建一个新的C放进去,执行之后就是CD。

特别注意的坑

singleInstance返回任务栈

现在模拟一个场景:现在有三个活动 A,B,C。A和C的启动模式都是standard,B的启动模式是singleInstance。先启动A,再启动B,然后再启动C。这个时候问题来了,如果我这个时候按下返回键,是回到B吗?答案是回到A。再按一下呢,返回桌面吗?答案是回到B,再按一下再回到桌面。其实不难理解。我们都知道singleInstance会创建一个独立的栈,当我们启动A的时候,A位于栈First中,启动B的时候,就会创建一个栈Second并把B实例放进去。这个时候再启动C,就会切换到栈FIrst,因为singleInstance创建的栈只能放一个,所以C会放到栈First中,当按下返回的时候,栈First中的活动就会依次出栈,直到全部出完,才会切换到栈Second中。所以要注意这个点。

singleTask多任务栈启动问题

这个问题和上面singleTop的本质是一样的。模拟一个场景:现在有两个栈:First:ABC;Second:QWE。栈First位于前台,栈Second位于后台。A位于栈顶。这个时候以singleTask的模式启动W,会发生什么样的情况呢?首先会切换到栈Second,再把Q出栈,W提到栈顶,并执行W的onNewIntent方法。这个时候按返回键就会把Second栈中的活动依次出栈,全部出完后才会切换到栈First。

singleTask的TaskAffinity与allowTaskReparenting参数

前面我们讲到给singleTask模式指定要启动的任务栈的名字,怎么指定呢?可以在AndroidManifest中指定相关的属性,如下:

<activity android:name=".Main2Activity"
     android:launchMode="singleTask"
     android:taskAffinity="com.huan"
     android:allowTaskReparenting="true"/>
Nach dem Login kopieren

这里解释一下这两个参数

  • taskAffinity:指定任务栈的名字。默认的任务栈是包名,所以不能以包名来命名。
  • allowTaskReparenting:这个参数表示可不可以切换到新的任务栈,通常设置为true并和上面的参数一起使用。

我前面讲到可以给singleTask的活动指定一个栈名,然后启动的时候,就会切换到那个栈,并把新的活动放进去。但是如果设置allowTaskReparenting参数为false的话是不会切换到新的栈的。这个参数的意思是可不可以把新的活动转移到新的任务栈。简单点来说:当我们启动一个singleTask活动的时候,这个活动还是留在启动他的活动的栈中的。但是我们指定了taskAffinity这个参数,或者启动的活动是别的应用中的活动,那么就会创建一个新的任务栈。如果allowTaskReparenting这个参数是true的话,那么这个活动就会放到那个新的任务栈中。这样应该就可以明白了。所以这两个经常是配套一起使用的。

总结

活动的启动模式有四种,每种的功能都不一样,可以结合具体需要去使用,但是最重点还是要了解他的实现原理,栈中是怎么变化的,这个是比较重要的。了解这个之后那些特殊情况也就很容易理解了。
上面我讲的只是简单的使用,关于活动启动模式还有很多要了解。后续可能会解析一下,读者也可以自行去深度了解。

相关免费推荐:编程视频课程

Das obige ist der detaillierte Inhalt vonWerfen wir einen Blick auf den Aktivitätsstartmodus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Entwickeln Sie ein WeChat-Applet mit Python Entwickeln Sie ein WeChat-Applet mit Python Jun 17, 2023 pm 06:34 PM

Mit der Popularität mobiler Internettechnologie und Smartphones ist WeChat zu einer unverzichtbaren Anwendung im Leben der Menschen geworden. Mit WeChat-Miniprogrammen können Benutzer Miniprogramme direkt verwenden, um einige einfache Anforderungen zu erfüllen, ohne Anwendungen herunterladen und installieren zu müssen. In diesem Artikel wird erläutert, wie Sie mit Python ein WeChat-Applet entwickeln. 1. Vorbereitung Bevor Sie Python zum Entwickeln des WeChat-Applets verwenden, müssen Sie die entsprechende Python-Bibliothek installieren. Hier empfiehlt es sich, die beiden Bibliotheken wxpy und itchat zu verwenden. wxpy ist eine WeChat-Maschine

Können kleine Programme reagieren? Können kleine Programme reagieren? Dec 29, 2022 am 11:06 AM

Miniprogramme können React verwenden. 1. Implementieren Sie einen Renderer basierend auf „React-Reconciler“ und generieren Sie eine Miniprogrammkomponente zum Parsen und Rendern von DSL. 3. Installieren Sie npm und führen Sie den Entwickler-Build aus npm im Tool; 4. Führen Sie das Paket auf Ihrer eigenen Seite ein und verwenden Sie dann die API, um die Entwicklung abzuschließen.

Implementieren Sie Kartenumdreheffekte in WeChat-Miniprogrammen Implementieren Sie Kartenumdreheffekte in WeChat-Miniprogrammen Nov 21, 2023 am 10:55 AM

Implementieren von Kartenumdreheffekten in WeChat-Miniprogrammen In WeChat-Miniprogrammen ist die Implementierung von Kartenumdreheffekten ein häufiger Animationseffekt, der die Benutzererfahrung und die Attraktivität von Schnittstelleninteraktionen verbessern kann. Im Folgenden wird detailliert beschrieben, wie der Kartenumdrehungseffekt im WeChat-Applet implementiert wird, und relevante Codebeispiele bereitgestellt. Zunächst müssen Sie in der Seitenlayoutdatei des Miniprogramms zwei Kartenelemente definieren, eines für die Anzeige des vorderen Inhalts und eines für die Anzeige des hinteren Inhalts. Der spezifische Beispielcode lautet wie folgt: &lt;!--index.wxml-. -&gt;&l

Alipay hat das Miniprogramm „Chinese Character Picking-Rare Characters' gestartet, um die Bibliothek seltener Charaktere zu sammeln und zu ergänzen Alipay hat das Miniprogramm „Chinese Character Picking-Rare Characters' gestartet, um die Bibliothek seltener Charaktere zu sammeln und zu ergänzen Oct 31, 2023 pm 09:25 PM

Laut Nachrichten dieser Website vom 31. Oktober und 27. Mai dieses Jahres kündigte die Ant Group den Start des „Chinese Character Picking Project“ an und leitete kürzlich neue Fortschritte ein: Alipay startete das Miniprogramm „Chinese Character Picking – Uncommon Characters“. um Sammlungen der Gesellschaft zu sammeln. Seltene Charaktere ergänzen die Bibliothek seltener Charaktere und bieten unterschiedliche Eingabeerlebnisse für seltene Charaktere, um die Eingabemethode für seltene Charaktere in Alipay zu verbessern. Derzeit können Benutzer das Applet „Ungewöhnliche Zeichen“ aufrufen, indem sie nach Schlüsselwörtern wie „Aufnehmen chinesischer Zeichen“ und „Seltene Zeichen“ suchen. Im Miniprogramm können Benutzer Bilder von seltenen Zeichen einreichen, die vom System nicht erkannt und eingegeben wurden. Nach der Bestätigung nehmen Alipay-Ingenieure zusätzliche Einträge in die Schriftartenbibliothek vor. Auf dieser Website wurde festgestellt, dass Benutzer im Miniprogramm auch die neueste Eingabemethode zur Wortteilung nutzen können. Diese Eingabemethode ist für seltene Wörter mit unklarer Aussprache konzipiert. Demontage durch den Benutzer

Wie uniapp eine schnelle Konvertierung zwischen Miniprogrammen und H5 erreicht Wie uniapp eine schnelle Konvertierung zwischen Miniprogrammen und H5 erreicht Oct 20, 2023 pm 02:12 PM

Wie Uniapp eine schnelle Konvertierung zwischen Miniprogrammen und H5 erreichen kann, erfordert spezifische Codebeispiele. Mit der Entwicklung des mobilen Internets und der Popularität von Smartphones sind Miniprogramme und H5 zu unverzichtbaren Anwendungsformen geworden. Als plattformübergreifendes Entwicklungsframework kann Uniapp die Konvertierung zwischen kleinen Programmen und H5 basierend auf einer Reihe von Codes schnell realisieren und so die Entwicklungseffizienz erheblich verbessern. In diesem Artikel wird vorgestellt, wie Uniapp eine schnelle Konvertierung zwischen Miniprogrammen und H5 erreichen kann, und es werden konkrete Codebeispiele gegeben. 1. Einführung in uniapp unia

Tutorial zum Schreiben eines einfachen Chat-Programms in Python Tutorial zum Schreiben eines einfachen Chat-Programms in Python May 08, 2023 pm 06:37 PM

Implementierungsidee x01 Servereinrichtung Zunächst wird auf der Serverseite ein Socket zum Empfangen von Nachrichten verwendet. Jedes Mal, wenn eine Socket-Anfrage angenommen wird, wird ein neuer Thread geöffnet, um die Verteilung und Annahme von Nachrichten zu verwalten Um alle Threads zu verwalten und damit die Verarbeitung verschiedener Funktionen des Chatrooms zu realisieren, ist die Einrichtung des x02-Clients viel einfacher als die des Servers. Die Funktion des Clients besteht lediglich darin, Nachrichten zu senden und zu empfangen und bestimmte Zeichen einzugeben Um die Verwendung unterschiedlicher Funktionen zu erreichen, müssen Sie daher auf der Clientseite nur zwei Threads verwenden, einen für den Empfang von Nachrichten und einen für das Senden von Nachrichten liegt daran, nur

So erhalten Sie eine Mitgliedschaft im WeChat-Miniprogramm So erhalten Sie eine Mitgliedschaft im WeChat-Miniprogramm May 07, 2024 am 10:24 AM

1. Öffnen Sie das WeChat-Miniprogramm und rufen Sie die entsprechende Miniprogrammseite auf. 2. Den mitgliederbezogenen Zugang finden Sie auf der Miniprogrammseite. Normalerweise befindet sich der Mitgliedereingang in der unteren Navigationsleiste oder im persönlichen Zentrum. 3. Klicken Sie auf das Mitgliedschaftsportal, um die Seite mit dem Mitgliedsantrag aufzurufen. 4. Geben Sie auf der Seite des Mitgliedsantrags relevante Informationen wie Mobiltelefonnummer, Name usw. ein. Nachdem Sie die Informationen ausgefüllt haben, reichen Sie den Antrag ein. 5. Das Miniprogramm prüft den Mitgliedschaftsantrag. Nach bestandener Prüfung kann der Benutzer Mitglied des WeChat-Miniprogramms werden. 6. Als Mitglied genießen Benutzer mehr Mitgliedschaftsrechte, wie z. B. Punkte, Gutscheine, exklusive Aktivitäten für Mitglieder usw.

So bedienen Sie die Miniprogramm-Registrierung So bedienen Sie die Miniprogramm-Registrierung Sep 13, 2023 pm 04:36 PM

Schritte zur Miniprogramm-Registrierung: 1. Erstellen Sie Kopien von Personalausweisen, Unternehmenslizenzen, juristischen Personenausweisen und anderen Archivierungsmaterialien. 2. Melden Sie sich beim Miniprogramm-Verwaltungshintergrund an. Wählen Sie „Grundeinstellungen“; 5. Geben Sie die Anmeldeinformationen ein; 6. Laden Sie die Anmeldematerialien hoch; 7. Senden Sie den Anmeldeantrag; 8. Warten Sie auf die Überprüfungsergebnisse. Wenn die Einreichung nicht bestanden wird, nehmen Sie basierend auf den Gründen Änderungen vor und den Einreichungsantrag erneut einreichen. 9. Die Folgemaßnahmen für die Einreichung sind Can.

See all articles