詳解androidwebView獨立進程通訊方式-創新互聯

為什么需要將webView放在獨立進程

發展壯大離不開廣大客戶長期以來的信賴與支持,我們將始終秉承“誠信為本、服務至上”的服務理念,堅持“二合一”的優良服務模式,真誠服務每家企業,認真做好每個細節,不斷完善自我,成就企業,實現共贏。行業涉及除甲醛等,在網站建設、網絡營銷推廣、WAP手機網站、VI設計、軟件開發等項目上具有豐富的設計經驗。
  • webView 加載網頁的時候可能占用大量內存,導致應用程序OOM。
  • webView 在訪問結束的時候可以直接殺死該進程,防止內存泄漏。
  • webView 在崩潰的時候不影響主進程。

webView獨立進程需要注意什么

  • 由于進程之間內存是獨立的,所以導致了Appcation, 靜態類需要在新的進程重新創建。
  • 內存中的數據不共享,需要跨進程通訊。

如何聲明一個獨立進程

在默認情況下,同一應用的所有組件都在相同的進程中運行。
在Manifest中可以設置各組件 (<activity>、<service>、<receiver>、<provider>)的 android:process 屬性來指定相應的進程。

跨進程的方式

在android當中提供了2種方式實現。


一種是Messenger, 另一種是Aidl.

  • Messenger:實現相對簡單,將所有請求放到消息隊列中,不適合做并發處理,在大多數的場景用Messenger就可以實現了。
  • AIDL: 適合并發操作。直接方法調用,結構更清晰。

Messenger

由于Messenger是采用消息隊列的方式實現,所有接受和發送的時候都需要Handler協助。

服務端

public class MessengerService extends Service {
  
  public static final int GET_DATA = 1;
  public static final int SET_DATA = 2;
  
  Messenger messenger = new Messenger(new ServiceHandler());
  Messenger replyMessenger; //向客服端返回信息
  public MessengerService() {
  }
  
  @Override
  public IBinder onBind(Intent intent) {
    return messenger.getBinder();
  }
  
  
  class ServiceHandler extends Handler {
    @Override
    public void handleMessage(Message msg) {
      replyMessenger = msg.replyTo;
      switch (msg.what) {
        case GET_DATA:
          //客服端向服務端請求數據
          if (replyMessenger != null) {
            Bundle bundle = new Bundle();
            bundle.putString("str", CustomData.getInstance().getData());
            Message message = Message.obtain(null, 1);
            message.setData(bundle);
            try {
              replyMessenger.send(message);
            } catch (RemoteException e) {
              e.printStackTrace();
            }
          }
          break;
        case SET_DATA:
          //客服端向服務端請求更新數據
          CustomData.getInstance().setData(msg.getData().getString("str"));
          break;
      }
    }
  }
}

本文題目:詳解androidwebView獨立進程通訊方式-創新互聯
網址分享:http://m.kartarina.com/article40/ejdeo.html

成都網站建設公司_創新互聯,為您提供面包屑導航、商城網站品牌網站設計響應式網站、自適應網站、動態網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

綿陽服務器托管
主站蜘蛛池模板: 日韩aⅴ人妻无码一区二区| 亚洲久热无码av中文字幕| 国产在线观看无码免费视频| 东京热无码av一区二区| 午夜无码国产理论在线| 亚洲AV蜜桃永久无码精品| 亚洲国产精品无码久久久不卡| 无码一区二区三区爆白浆| 一本加勒比hezyo无码专区| 无码精品人妻一区二区三区中| 国模无码视频一区| 中文字幕无码日韩欧毛| 亚洲AV综合色区无码一区爱AV| 亚洲av无码专区在线观看素人| 中日韩亚洲人成无码网站| 成人无码A区在线观看视频| 日韩电影无码A不卡| 国产成年无码久久久久下载| 十八禁无码免费网站| 亚洲AV永久无码区成人网站| 亚洲精品无码久久毛片| 国产精品无码专区在线播放| av无码久久久久不卡免费网站| 人妻夜夜添夜夜无码AV| 亚洲熟妇无码另类久久久| 国产强伦姧在线观看无码| 亚洲AV无码乱码精品国产| 无码视频免费一区二三区| 日韩中文无码有码免费视频| 精品人妻无码一区二区三区蜜桃一| 影音先锋中文无码一区 | 精品无码久久久久久午夜| 九九久久精品无码专区| 超清纯白嫩大学生无码网站| 亚洲毛片av日韩av无码| 中文字幕人妻三级中文无码视频 | 国产成人无码精品久久久久免费| 人妻丰满熟妇AV无码区免| 蕾丝av无码专区在线观看| 人妻无码一区二区视频| 久久青青草原亚洲av无码|