編輯:關於android開發
先看一下singleTop啟動模式的說明:
可以有多個實例,但是不允許此Activity的多個實例疊加。即,如果此Activity有實例在棧頂的時候,啟動這個Activity,不會創建新的實例而會調用其OnNewIntent方法,如果不在棧頂則創建新的實例
下面我們通過一個實例來仔細了解
這是在手機上的效果

首先是xml布局文件,共兩個按鈕
MainActivity.class
package com.example.singletop;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener{
private Button btn_open1,btn_open2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//設置標題為Activity1
setTitle("我是Activity1");
btn_open1=(Button) findViewById(R.id.button1);
btn_open2=(Button) findViewById(R.id.button2);
btn_open1.setOnClickListener(this);
btn_open2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.button1:
startActivity(new Intent(MainActivity.this,MainActivity.class));
break;
case R.id.button2:
startActivity(new Intent(MainActivity.this,OtherActivity.class));
break;
}
}
}
OtherActivity.class
package com.example.singletop;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class OtherActivity extends Activity implements OnClickListener{
private Button btn_open1,btn_open2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//設置標題為Activity2
setTitle("我是Activity2");
btn_open1=(Button) findViewById(R.id.button1);
btn_open2=(Button) findViewById(R.id.button2);
btn_open1.setOnClickListener(this);
btn_open2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.button1:
startActivity(new Intent(OtherActivity.this,MainActivity.class));
break;
case R.id.button2:
startActivity(new Intent(OtherActivity.this,OtherActivity.class));
break;
}
}
//在此方法中打印是否調用這個方法的日志
@Override
protected void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
super.onNewIntent(intent);
Log.d("OtherActivity", "OnNewIntent");
}
}
MainActivity是standard啟動模式
OtherActivity是singleTop啟動模式
在AndroidManifest.xml中MainActivity默認就是standard啟動模式
配置一下OtherActivity就好
<activity android:name="com.example.singletop.OtherActivity" android:launchmode="singleTop"></activity>
我們舉幾個例子。
Activity1->Activity2->Activity1->Activity2
我們做完這些 在棧中的情況是

然後我們看看日志信息 為空 說明並沒有調用onNewIntent方法,因為我們在創建啟動模式為singleTop的Activity2時Activity2不在棧頂。需要按四次返回才能返回到主界面。
2.Activity1->Activity2->Activity2->Activity2
這個時候棧裡面的情況是什麼樣的呢?

沒錯 就是這樣的 。為什麼呢?因為我們在創建第三個Activity2時,因為Activity2為singleTop的啟動模式,發現此時有在第二個創建的Activity2為棧頂,所以不會創建新的實例而會調用其OnNewIntent方法。創建第四個Activity2也是同樣的道理。這時候我們只需要按兩次返回鍵就能返回到主界面。下面看看日志信息

看到這裡的小伙伴的你,懂了這種啟動模式了嗎?
在加深一下印象吧~
singleTop啟動模式的說明:
可以有多個實例,但是不允許此Activity的多個實例疊加。即,如果此Activity有實例在棧頂的時候,啟動這個Activity,不會創建新的實例而會調用其OnNewIntent方法,如果不在棧頂則創建新的實例
Android 采用get方式提交數據到服務器,androidget
Android 采用get方式提交數據到服務器,androidget首先搭建模擬web 服務器,新建動態web項目,servlet代碼如下: package com.w
硅谷社交8--聯系人列表頁面,硅谷社交8--聯系人
硅谷社交8--聯系人列表頁面,硅谷社交8--聯系人 1.是否有邀請信息紅點的設置 // 獲取當前是否有新的邀請信息 boolean is_notify = SpUtil
算法—8.有序數組中的二分查找,算法數組二分
算法—8.有序數組中的二分查找,算法數組二分 1.具體算法 /** * 算法3.2 二分查找(基於有序數組) * Created by huazhou on 201
[FastDev4Android框架開發]神器ViewGragHelper完全解析之詳解實現QQ5.X側滑酷炫效果(三十四)
[FastDev4Android框架開發]神器ViewGragHelper完全解析之詳解實現QQ5.X側滑酷炫效果(三十四) (一).前言: 這幾天正
Android系統之路(初識MTK) ------ System-Bluetooth name/WiFi AP name/sleep add never/Notification popup
Android系統之路(初識MTK) ------ System-Blu