activity啟動模式之singleTask

来源:http://www.cnblogs.com/Renyi-Fan/archive/2017/08/01/7271576.html
-Advertisement-
Play Games

activity啟動模式之singleTask 一、簡介 如果另外一個應用調用了C2,C2在棧底,如果這個程式裡面再嗲用C1,C3,C2,那麼這個C2就是調用onNewIntant的,C1和C3都被銷毀了; 另一個程式>c2>c1>c3>c2,實際只剩:另一個程式>c2。 二、代碼實例 效果圖: 上 ...


activity啟動模式之singleTask

一、簡介

如果另外一個應用調用了C2,C2在棧底,如果這個程式裡面再嗲用C1,C3,C2,那麼這個C2就是調用onNewIntant的,C1和C3都被銷毀了;

另一個程式>c2>c1>c3>c2,實際只剩:另一個程式>c2。

 

二、代碼實例

效果圖:

上面就是調用了onNewIntent方法的情況

 

代碼:

activity.C1

 1 package activity;
 2 
 3 
 4 
 5 
 6 import com.example.activityLaunchSingleTask.R;
 7 
 8 import android.app.Activity;
 9 import android.content.Intent;
10 import android.os.Bundle;
11 import android.view.View;
12 import android.view.View.OnClickListener;
13 import android.widget.Button;
14 
15 
16 
17 public class C1 extends Activity implements OnClickListener{
18     private Button btn_c1;//創建一個button對象
19     private Button btn_c2;//創建一個button對象
20     private Button btn_c3;//創建一個button對象
21      protected void onCreate(Bundle savedInstanceState) {
22             super.onCreate(savedInstanceState);//父類操作
23             setContentView(R.layout.activity_main);//引入名為activity_main的界面
24             setTitle("我是C1");
25             btn_c1=(Button) findViewById(R.id.btn_c1);//找id為btn_openActivity的button
26             btn_c2=(Button) findViewById(R.id.btn_c2);//找id為btn_openActivity的button
27             btn_c3=(Button) findViewById(R.id.btn_c3);//找id為btn_openActivity的button
28             btn_c1.setOnClickListener(this);
29             btn_c2.setOnClickListener(this);
30             btn_c3.setOnClickListener(this);
31         }
32     @Override
33     public void onClick(View v) {
34         // TODO Auto-generated method stub
35         switch (v.getId()) {
36         case R.id.btn_c1:
37             Intent intent=new Intent();
38             intent.setClass(C1.this, C1.class);
39             startActivity(intent);
40             break;
41         case R.id.btn_c2:
42             Intent intent2=new Intent();
43             intent2.setClass(C1.this, C2.class);
44             startActivity(intent2);
45             break;
46         case R.id.btn_c3:
47             Intent intent3=new Intent();
48             intent3.setClass(C1.this, C3.class);
49             startActivity(intent3);
50             break;
51         default:
52             break;
53         }
54     }
55 }

activity.C2

 1 package activity;
 2 
 3 
 4 
 5 
 6 import com.example.activityLaunchSingleTask.R;
 7 
 8 import android.app.Activity;
 9 import android.content.Intent;
10 import android.os.Bundle;
11 import android.view.View;
12 import android.view.View.OnClickListener;
13 import android.widget.Button;
14 import android.widget.Toast;
15 
16 
17 
18 public class C2 extends Activity implements OnClickListener{
19     private Button btn_c1;//創建一個button對象
20     private Button btn_c2;//創建一個button對象
21     private Button btn_c3;//創建一個button對象
22      protected void onCreate(Bundle savedInstanceState) {
23             super.onCreate(savedInstanceState);//父類操作
24             setContentView(R.layout.activity_main);//引入名為activity_main的界面
25             setTitle("我是C2");
26             btn_c1=(Button) findViewById(R.id.btn_c1);//找id為btn_openActivity的button
27             btn_c2=(Button) findViewById(R.id.btn_c2);//找id為btn_openActivity的button
28             btn_c3=(Button) findViewById(R.id.btn_c3);//找id為btn_openActivity的button
29             btn_c1.setOnClickListener(this);
30             btn_c2.setOnClickListener(this);
31             btn_c3.setOnClickListener(this);
32         }
33     @Override
34     public void onClick(View v) {
35         // TODO Auto-generated method stub
36         switch (v.getId()) {
37         case R.id.btn_c1:
38             Intent intent=new Intent();
39             intent.setClass(C2.this, C1.class);
40             startActivity(intent);
41             break;
42         case R.id.btn_c2:
43             Intent intent2=new Intent();
44             intent2.setClass(C2.this, C2.class);
45             startActivity(intent2);
46             break;
47         case R.id.btn_c3:
48             Intent intent3=new Intent();
49             intent3.setClass(C2.this, C3.class);
50             startActivity(intent3);
51             break;
52         default:
53             break;
54         }
55     }
56     
57     @Override
58     protected void onNewIntent(Intent intent) {
59         // TODO Auto-generated method stub
60         super.onNewIntent(intent);
61         Toast.makeText(this, "onNewIntent", Toast.LENGTH_SHORT).show();
62     }
63 }

activity.C3

 1 package activity;
 2 
 3 
 4 
 5 
 6 import com.example.activityLaunchSingleTask.R;
 7 
 8 import android.app.Activity;
 9 import android.content.Intent;
10 import android.os.Bundle;
11 import android.view.View;
12 import android.view.View.OnClickListener;
13 import android.widget.Button;
14 
15 
16 
17 public class C3 extends Activity implements OnClickListener{
18     private Button btn_c1;//創建一個button對象
19     private Button btn_c2;//創建一個button對象
20     private Button btn_c3;//創建一個button對象
21      protected void onCreate(Bundle savedInstanceState) {
22             super.onCreate(savedInstanceState);//父類操作
23             setContentView(R.layout.activity_main);//引入名為activity_main的界面
24             setTitle("我是C3");
25             btn_c1=(Button) findViewById(R.id.btn_c1);//找id為btn_openActivity的button
26             btn_c2=(Button) findViewById(R.id.btn_c2);//找id為btn_openActivity的button
27             btn_c3=(Button) findViewById(R.id.btn_c3);//找id為btn_openActivity的button
28             btn_c1.setOnClickListener(this);
29             btn_c2.setOnClickListener(this);
30             btn_c3.setOnClickListener(this);
31         }
32     @Override
33     public void onClick(View v) {
34         // TODO Auto-generated method stub
35         switch (v.getId()) {
36         case R.id.btn_c1:
37             Intent intent=new Intent();
38             intent.setClass(C3.this, C1.class);
39             startActivity(intent);
40             break;
41         case R.id.btn_c2:
42             Intent intent2=new Intent();
43             intent2.setClass(C3.this, C2.class);
44             startActivity(intent2);
45             break;
46         case R.id.btn_c3:
47             Intent intent3=new Intent();
48             intent3.setClass(C3.this, C3.class);
49             startActivity(intent3);
50             break;
51         default:
52             break;
53         }
54     }
55 }

/activityLaunchSingleTask/AndroidManifest.xml

 1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 2     package="com.example.activityLaunchSingleTask"
 3     android:versionCode="1"
 4     android:versionName="1.0" >
 5 
 6     <uses-sdk
 7         android:minSdkVersion="8"
 8         android:targetSdkVersion="19" />
 9 
10     <application
11         android:allowBackup="true"
12         android:icon="@drawable/ic_launcher"
13         android:label="@string/app_name"
14         android:theme="@style/AppTheme" >
15         <activity
16             android:name="activity.C1"
17             android:label="@string/app_name" >
18             <intent-filter>
19                 <action android:name="android.intent.action.MAIN" />
20 
21                 <category android:name="android.intent.category.LAUNCHER" />
22             </intent-filter>
23         </activity>
24         <activity android:name="activity.C2" android:launchMode="singleTask">
25             <intent-filter>
26                 <action android:name="com.example.activityLaunchSingleTask" />
27                 <category android:name="android.intent.category.DEFAULT" />
28             </intent-filter>
29         </activity>
30         <activity android:name="activity.C3"></activity>
31     </application>
32 
33 </manifest>

/activityLaunchSingleTask/res/layout/activity_main.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6 
 7     <Button
 8         android:id="@+id/btn_c1"
 9         android:layout_width="match_parent"
10         android:layout_height="50dp"
11         android:layout_weight="0.00"
12         android:text="@string/btn_c1" />
13 
14     <Button
15         android:id="@+id/btn_c2"
16         android:layout_width="match_parent"
17         android:layout_height="wrap_content"
18         android:text="@string/btn_c2" />
19 
20     <Button
21         android:id="@+id/btn_c3"
22         android:layout_width="match_parent"
23         android:layout_height="wrap_content"
24         android:text="@string/btn_c3" />
25 
26 </LinearLayout>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ObservableCollection<Evaluate> EvaluateList = new ObservableCollection<Evaluate>();//評論集合,這個集合中包含了一個圖片集合public ObservableCollection<PictureInfo> Pictu ...
  • Android Studio 2.3 API 25 從源碼角度分析Handler機制。有利於使用Handler和分析Handler的相關問題。 Handler 簡介 一個Handler允許發送和處理Message,通過關聯線程的 MessageQueue 執行 Runnable 對象。 每個Hand ...
  • 1.隱式方法,通過僅指定 Style 的 TargetType。(設置全部的Button樣式) 2.顯式方法,通過指定 Style 的 TargetType 和 x:Key 特性這一特性,然後通過使用顯式鍵的 {StaticResource} 標記擴展引用設置目標控制項的 Style 屬性 3.單個樣 ...
  • activity狀態的保存和恢復 一、簡介 1、保存activity狀態 * 保存activity狀態,onSaveInstanceState這個方法會自動保存有ID的組件的狀態 * 沒有ID的組件或者變數的狀態的保存就需要我們重寫這個方法* 這個方法是在activity被回收或者被銷毀的時候保存的 ...
  • 當你的應用運行在具有觸摸屏的設備上時,觸摸鍵盤可用於文本輸入。當用戶點擊可編輯的輸入欄位(如 TextBox 或 PasswordBox)時,系統會調用觸摸鍵盤。通過將文本控制項的輸入範圍設置為與你期望用戶輸入的數據類型匹配,可以讓用戶在應用中更快捷地輸入數據。輸入範圍會針對控制項所預期的文本輸入類型向 ...
  • 1、label約束: 1)、只需約束x、y 點相關就行。寬高 長度相關不用約束,就算用boundingRectWithSize計算出來的,也可能不准。 如:top、bottom二選一,trailing、leading二選一,或者center,寬高會自動生成。(同時約束trailing、leading ...
  • 一,代碼。 二,輸出。 ...
  • activity啟動模式之singleInstance 一、簡介 二、代碼實例 結果圖: 代碼: activity.C1 activity.C2 activity.C3 /activityLaunchSingleInstance/AndroidManifest.xml ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...