亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于android連續(xù)點擊出現(xiàn)多個Activity界面的解決方法

 更新時間:2020年03月26日 16:51:15   作者:sapodilla  
這篇文章主要介紹了關(guān)于android連續(xù)點擊出現(xiàn)多個Activity界面的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

前言

開始始學(xué)習(xí)android,對android的啟動模式?jīng)]有什么了解,就使用了時間判斷是否重復(fù)點擊了兩次按鈕,啟動另外的activity界面,這樣的控制方法,有時候會失效,比如,兩秒鐘還未啟動另外的activity,那么又可以重復(fù)點擊。所以,就調(diào)整為android的啟動模式來控制重復(fù)出現(xiàn)多個acitvity。

一、通過時間控制點擊次數(shù):

這種方式對應(yīng)控制網(wǎng)絡(luò)請求不錯。

public class NoDoubleClickUtil {
  private static long lastClickTime;
  private final static int SPACE_TIME =2000;

  public static void initLastClickTime() {
    lastClickTime = 0;
  }

  public synchronized static boolean isDoubleClick() {
    long currentTime = System.currentTimeMillis();
    boolean isClickDouble;
    if (currentTime - lastClickTime >
        SPACE_TIME) {
      isClickDouble = false;
    } else {
      isClickDouble = true;
    }
    lastClickTime = currentTime;
    return isClickDouble;
  }
}

二、通過launchMode啟動模式控制出現(xiàn)多個activity的方式:

這種方式真正意義上杜絕了同時出現(xiàn)相同的多個activity。

<activity android:name=".InternetHospital.InternetHospitalInquiryCallUI"
android:launchMode="singleInstance"/>

或者在代碼中設(shè)置:

Intent intent = new Intent();
intent.setClass(getApplicationContext(), TargetActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);

三、android的四種啟動模式:

1、standard模式:每次調(diào)用startActivity()啟動時都會創(chuàng)建一個新的Activity放在棧頂(默認(rèn)都是這個模式)

2、singleTop模式:啟動Activity時,指定Activity不在棧頂就創(chuàng)建,如在棧頂,則不再創(chuàng)建(不會出現(xiàn)兩個相同的Activity相鄰)

3、singleTask模式:如果啟動的Activity不存在就創(chuàng)建Activity,如果存在直接跳轉(zhuǎn)到指定的Activity所在位置(在其上面的Activity會被移出棧,也就是一個棧中不能有重復(fù)的Activity)

4、singleInstance模式:如果啟動的Activity不存在就創(chuàng)建一個Activity同時創(chuàng)建一個棧,如果存在就將指定的Activity存在的棧移動到棧頂(表示這個Activity只能存在于一個獨立的任務(wù)棧中,同應(yīng)用的其它Activity與其無關(guān))

補充知識:Android中退出多個Activity的兩個經(jīng)典方法

一種把每個activity用集合記住,然后逐一干掉;另一種思路是使用廣播。

方法一、用list保存activity實例,然后逐一干掉

創(chuàng)建一個外部類繼承Application用來存放activity

public class MyActvity extends Application {
  //創(chuàng)建一個集合,用來存放activity的對象
  ArrayList<Activity>list=new ArrayList<>();
  //聲明一個本類的對象
  private static MyActvity instance;
  public MyActvity() {
  }
  //創(chuàng)建一個方法,用來初始化MyActivity的對象,并且初始化的對像的返回
  public synchronized static MyActvity getInstance(){
    if (instance==null){
      instance=new MyActvity();
    }
    return instance;
  }
  //調(diào)用此方法用來向集合當(dāng)中添加activity對象
  public void addActivity(Activity activity){
    list.add(activity);
  }
  //判斷activity是否已經(jīng)在集合當(dāng)中
  public boolean isexitlist(Activity activity){
    if (list.contains(activity)){
      return true;
    }
    return false;
  }
  //當(dāng)調(diào)用此方法的時候,關(guān)閉所有的activity
  public void exit(){
    for (Activity activity:list){
      activity.finish();
    }
    //退出當(dāng)前的MyActivity
    System.exit(0);
  }

  @Override
  public void onLowMemory() {
    super.onLowMemory();
    //當(dāng)系統(tǒng)的存儲空間不夠的時候,調(diào)用系統(tǒng)的垃圾回收期,清理里面的垃圾
    System.gc();
  }
}

Activity1代碼:

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //調(diào)用存放activity類
    MyActvity instance = MyActvity.getInstance();
    //判斷存放activity類是否存放該activity,不存在加入類
    if (!instance.isexitlist(this)){
      instance.addActivity(this);
    }
    Intent intent = new Intent(this, Main2Activity.class);
    startActivity(intent);
  }
}

Activity2代碼:

public class Main2Activity extends Activity {

  private MyActvity instance;

  /**
   * Called when the activity is first created.
   */

  @Override+
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sdfa);
    Button bt= (Button) findViewById(R.id.bt);
    instance = MyActvity.getInstance();
    if (!instance.isexitlist(this)){
      instance.addActivity(this);
    }
    bt.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
      //調(diào)用exit()方法銷毀里面所有activity
        instance.exit();
      }
    });

  }
}

方法二、使用廣播在activity里注冊廣播,銷毀時啟動廣播

MainActivity里注冊廣播:

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Intent intent = new Intent(this, Main2Activity.class);
    startActivity(intent);
    //注冊廣播
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(Define.PAHNAME);
    registerReceiver(new MyReceiver(),intentFilter);
  }
  class MyReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
      unregisterReceiver(this);
      ((Activity)context).finish();
    }
  }
}

activity2:啟動廣播

public class Main2Activity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sdfa);
    Button bt= (Button) findViewById(R.id.bt);
    bt.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        Intent intent = new Intent(Define.PAHNAME);
        sendBroadcast(intent);
        finish();
      }
    });

  }
}

以上這篇關(guān)于android連續(xù)點擊出現(xiàn)多個Activity界面的解決方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android客戶端實現(xiàn)注冊、登錄詳解(2)

    Android客戶端實現(xiàn)注冊、登錄詳解(2)

    這篇文章主要為大家詳細(xì)介紹了Android客戶端實現(xiàn)注冊、登錄代碼第二篇,App與服務(wù)器的交互實現(xiàn)登錄和自動登錄功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Flutter利用SizeTransition實現(xiàn)組件飛入效果

    Flutter利用SizeTransition實現(xiàn)組件飛入效果

    本文將為大家介紹SizeTransition,SizeTransition用于更改子組件的尺寸來實現(xiàn)動畫,支持垂直方向或水平方向修改動畫。本文將利用其實現(xiàn)組件飛入效果,需要的可以參考一下
    2022-04-04
  • Android手機鬧鐘用法實例

    Android手機鬧鐘用法實例

    這篇文章主要介紹了Android手機鬧鐘用法,以實例形式較為詳細(xì)的分析了Android實現(xiàn)鬧鐘功能的頁面布局及具體功能相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • Android實現(xiàn)局部圖片滑動指引效果示例

    Android實現(xiàn)局部圖片滑動指引效果示例

    現(xiàn)在滑動效果用的比較多,尤其是在手機端上面,本文介紹了Android實現(xiàn)局部圖片滑動指引效果示例,現(xiàn)在就分享給大家,也給大家做個參考。
    2016-10-10
  • 利用kotlin實現(xiàn)統(tǒng)計文件字符個數(shù)的方法示例

    利用kotlin實現(xiàn)統(tǒng)計文件字符個數(shù)的方法示例

    最近在學(xué)習(xí)kotlin,發(fā)現(xiàn)了一些不錯的小技巧,所以下面這篇文章主要給大家介紹了關(guān)于利用kotlin實現(xiàn)統(tǒng)計文件字符個數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • Android中button實現(xiàn)onclicklistener事件的兩種方式

    Android中button實現(xiàn)onclicklistener事件的兩種方式

    本文介紹下Android中button實現(xiàn)onclicklistener事件的兩種方法,感興趣的朋友可以參考下
    2013-04-04
  • Android編程之include文件的使用方法

    Android編程之include文件的使用方法

    這篇文章主要介紹了Android編程之include文件的使用方法,實例分析了Android使用include引入文件的技巧,有助于增加代碼的重用性,提高程序設(shè)計效率,需要的朋友可以參考下
    2016-01-01
  • 關(guān)于Android中ListView嵌套GridView的問題

    關(guān)于Android中ListView嵌套GridView的問題

    在Android開發(fā)的過程中可能需要用到listview嵌套gridview的場景,但是在嵌套過程中也許會遇到問題,我們下面一起來看看是什么問題以及如何解決。
    2016-08-08
  • Android手勢控制實現(xiàn)縮放、移動圖片

    Android手勢控制實現(xiàn)縮放、移動圖片

    這篇文章主要為大家詳細(xì)介紹了Android手勢控制實現(xiàn)縮放、移動圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Android 開發(fā)仿簡書登錄框可刪除內(nèi)容或顯示密碼框的內(nèi)容

    Android 開發(fā)仿簡書登錄框可刪除內(nèi)容或顯示密碼框的內(nèi)容

    本文通過實例代碼給大家分享android開發(fā)中模仿簡書登錄框可刪除內(nèi)容或顯示密碼框的內(nèi)容,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2016-12-12

最新評論