国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

關于android連續點擊出現多個Activity界面的解決方法

瀏覽:85日期:2022-09-25 11:34:47

前言

開始始學習android,對android的啟動模式沒有什么了解,就使用了時間判斷是否重復點擊了兩次按鈕,啟動另外的activity界面,這樣的控制方法,有時候會失效,比如,兩秒鐘還未啟動另外的activity,那么又可以重復點擊。所以,就調整為android的啟動模式來控制重復出現多個acitvity。

一、通過時間控制點擊次數:

這種方式對應控制網絡請求不錯。

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啟動模式控制出現多個activity的方式:

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

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

或者在代碼中設置:

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

三、android的四種啟動模式:

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

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

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

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

補充知識:Android中退出多個Activity的兩個經典方法

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

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

創建一個外部類繼承Application用來存放activity

public class MyActvity extends Application { //創建一個集合,用來存放activity的對象 ArrayList<Activity>list=new ArrayList<>(); //聲明一個本類的對象 private static MyActvity instance; public MyActvity() { } //創建一個方法,用來初始化MyActivity的對象,并且初始化的對像的返回 public synchronized static MyActvity getInstance(){ if (instance==null){ instance=new MyActvity(); } return instance; } //調用此方法用來向集合當中添加activity對象 public void addActivity(Activity activity){ list.add(activity); } //判斷activity是否已經在集合當中 public boolean isexitlist(Activity activity){ if (list.contains(activity)){ return true; } return false; } //當調用此方法的時候,關閉所有的activity public void exit(){ for (Activity activity:list){ activity.finish(); } //退出當前的MyActivity System.exit(0); } @Override public void onLowMemory() { super.onLowMemory(); //當系統的存儲空間不夠的時候,調用系統的垃圾回收期,清理里面的垃圾 System.gc(); }}

Activity1代碼:

public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //調用存放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) { //調用exit()方法銷毀里面所有activityinstance.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(); } }); }}

以上這篇關于android連續點擊出現多個Activity界面的解決方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
主站蜘蛛池模板: 日本一区二区不卡视频 | 欧洲亚洲综合一区二区三区 | 免费观看欧美一级特黄 | 抱着cao才爽免费观看 | 国产成人在线视频观看 | 久久免费播放视频 | 亚洲精品自拍视频 | 欧洲免费无线码一二区 | 在线视频亚洲欧美 | 国产一区二区三区免费 | 国产com| 特级毛片免费视频播放 | 超薄肉色丝袜精品足j福利 超级乱淫视频aⅴ播放视频 | 成人性色生活影片 | 特级做a爰片毛片免费看一区 | 国产欧美亚洲三区久在线观看 | 亚洲国产成a人v在线 | 国产爱视频 | 三级视频欧美 | 亚洲在线播放 | 欧美一级高清毛片aaa | 国产成人精品久久综合 | 亚洲成人手机在线 | 国产年成美女网站视频免费看 | 日韩欧美在线播放视频 | 我们2018在线完整免费观看 | av片免费大全在线观看不卡 | 91精品一区二区综合在线 | 99久久精品免费看国产一区二区 | 黄色免费三级 | 国产精品热久久毛片 | 欧美日韩加勒比一区二区三区 | 久久免费视频网 | 亚洲欧美一区二区三区国产精品 | 9999久久| 久久久久久毛片免费播放 | 韩日一区二区 | 精品动漫一区二区 | 天堂av2017男人的天堂 | 老湿菠萝蜜在线看 | 亚洲在线观看免费视频 |