乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      使用觀察者模式完美實現(xiàn)android程序退出

       quasiceo 2016-01-11
          android的app程序退出有幾種方式:activity隊列方式、廣播方式。在這里介紹一下我實現(xiàn)該功能的方式--觀察者模式。
          方法的大概思路為:建立Activity基類,實現(xiàn)觀察者接口,實現(xiàn)監(jiān)聽方法,finish掉本實例;在Application里面單例一個目標對象,當需要關閉程序的時候,調用目標對象的通知方法,通知所有觀察者。
          代碼如下:
      觀察者接口
      Java代碼  收藏代碼
      1. public interface Observer {  
      2.     public void update(Subject subject);  
      3. }  

      目標對象基類
      Java代碼  收藏代碼
      1. public class Subject {  
      2.     private List<Observer> observers = new ArrayList<Observer>();  
      3.       
      4.     public void attach(Observer observer){  
      5.         observers.add(observer);  
      6.     }  
      7.   
      8.     public void detach(Observer observer){  
      9.         observers.remove(observer);  
      10.     }  
      11.       
      12.     protected void notifyObservers(){  
      13.         for(Observer observer : observers){  
      14.             observer.update(this);  
      15.         }  
      16.     }  
      17. }  

      目標對象子類(實現(xiàn)具體退出方法)
      Java代碼  收藏代碼
      1. public class ApplicationSubject extends Subject {  
      2.     public void exit(){  
      3.         notifyObservers();  
      4.     }  
      5. }  

      MyApplication類(在Manifest文件中將標簽application的name改為本類的全限定名)
      Java代碼  收藏代碼
      1. public class MyApplication extends Application {  
      2.   
      3.     private static ApplicationSubject applicationSubject;  
      4.       
      5.     public ApplicationSubject getApplicationSubject() {  
      6.                 if(applicationSubject == null) applicationSubject = new ApplicationSubject();  
      7.         return applicationSubject;  
      8.     }  
      9.       
      10. }  


      Activity基類
      Java代碼  收藏代碼
      1. public abstract class BaseActivity extends Activity implements Observer {  
      2.   
      3.     public MyApplication app;  
      4.   
      5.     @Override  
      6.     protected void onCreate(Bundle savedInstanceState) {  
      7.         // TODO Auto-generated method stub  
      8.         super.onCreate(savedInstanceState);  
      9.         app = (MyApplication) this.getApplication();  
      10.         app.getApplicationSubject().attach(this);  
      11.     }  
      12.   
      13.     @Override  
      14.     public void finish() {  
      15.         // TODO Auto-generated method stub  
      16.                 app.getApplicationSubject().detach(this);  
      17.         super.finish();  
      18.     }  
      19.   
      20.     /** 
      21.      * 關閉程序 
      22.      */  
      23.     public void close() {  
      24.         app.getApplicationSubject().exit();  
      25.     };  
      26.       
      27.     @Override  
      28.     public void update(Subject subject) {  
      29.         // TODO Auto-generated method stub  
      30.         this.finish();  
      31.     }  
      32.       
      33. }  


      寫幾個測試頁面測試一下
      Java代碼  收藏代碼
      1. public class ATestActivity extends BaseActivity {  
      2.     @Override  
      3.     protected void onCreate(Bundle savedInstanceState) {  
      4.         // TODO Auto-generated method stub  
      5.         super.onCreate(savedInstanceState);  
      6.         startActivity(new Intent(this, BTestActivity.class));  
      7.     }  
      8. }  
      9. public class BTestActivity extends BaseActivity {  
      10.     @Override  
      11.     protected void onCreate(Bundle savedInstanceState) {  
      12.         // TODO Auto-generated method stub  
      13.         super.onCreate(savedInstanceState);  
      14.         close(); //在BTestActivity中調用close方法,發(fā)現(xiàn)A和B都關閉了  
      15.     }  
      16. }  
      3
      4
      分享到:
      評論
      7 樓 小駿向前沖 2013-11-14  
      挺好的,只要是繼承自baseActivity的某一個類調用finish,就會通知所有繼承baseActivity的類finish掉自己,應該是這樣吧,不過如果給類Subject中的observers加上static,把類MyApplication的applicationSubject域的static去掉,是不是更好理解一點
      6 樓 malong26 2013-05-25  
      LinApex 寫道
      不錯,使用設計模式是好事,但是也不能濫用。直接繼承一個BaseActivity,保存所有的Activity,退出的時候全都finish掉就可以了。

      如果用隊列保存Activity,在使用Flag啟動Activity的時候你會發(fā)現(xiàn)捉襟見肘。
      5 樓 malong26 2013-05-25  
      su1216 寫道
      finish和退出根本不是一個概念

      那退出是什么概念呢?
      4 樓 malong26 2013-05-25  
      zhj198877 寫道
      貌似不行。。。

      哪有問題?
      3 樓 zhj198877 2013-05-24  
      貌似不行。。。
      2 樓 su1216 2013-05-03  
      finish和退出根本不是一個概念
      1 樓 LinApex 2013-05-02  
      不錯,使用設計模式是好事,但是也不能濫用。直接繼承一個BaseActivity,保存所有的Activity,退出的時候全都finish掉就可以了。

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多