• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 安卓學習筆記之IntentService

    什么是IntentService

    它會創建一個獨立的子線程來處理所有的Intent請求,創建的子線程來處理onHandleIntent()實現的代碼,無需處理多線程的問題。默認實現onBind()方法,返回為null;默認實現onStartCommand()方法,將請求的Intent添加到隊列中。這個類實際上是繼承自service,內部是封裝了HandlerThread和Handler類。


    代碼實現

    首先創建一個MyIntentService類,繼承自IntentService.
    既然是Service,就是和單純創建Service時,要在Manifest清單文件里面注冊。

    < service android:name=”.MyIntentService”/>

    再布局文件里面就只添加一個按鈕。代碼就不貼了。

    然后在MyIntentService 類里面。首先初步需要實現構造方法,傳入一個名稱,意思就是代表你該線程的名稱叫做MyIntentService. onHandleIntent()這個方法在內部實現耗時操作的代碼,一般是下載圖片比較多。但是我們這里簡單的演示一下這個類的使用方式。

    public class MyIntentService extends IntentService {
    
        private String str;
        private Handler handler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                Toast.makeText(MyIntentService.this, "已經收到消息了,消息是:"+str, Toast.LENGTH_SHORT).show();
            }
        };
    
    
        public MyIntentService() {
            super("MyIntentService");
        }
    
        @Override
        protected void onHandleIntent(@Nullable Intent intent) {
            //該方法是在子線程中執行的,所以需要和handler通信
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            handler.sendEmptyMessage(1);
    
    
        }
    
        @Override
        public int onStartCommand(@Nullable Intent intent, int flags, int startId) {
            str = intent.getStringExtra("does");
            return super.onStartCommand(intent, flags, startId);
        }
    }

    在MainActivity類里面

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        private Button btn_send;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            btn_send= (Button) findViewById(R.id.btn_send);
            btn_send.setOnClickListener(this);
    
        }
    
        @Override
        public void onClick(View view) {
            Intent intent=new Intent(this,MyIntentService.class);
            intent.putExtra("does","測試成功");
            startService(intent);
        }
    }

    在MainActivity中,開啟這個Service。
    運行結果如下,
    這里寫圖片描述

    這就是IntentService的使用。

    版權聲明:本文為qq_29157591原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_29157591/article/details/75964439

    智能推薦

    安卓學習之Toast

    Toast toast是在屏幕下方浮現一個窗口的組件,主要提醒用戶的一種機制。 1.如何添加Toast 我們可以使用Toast.makeText(Context context,CharSequence text,int duration); 第一個參數是上下文,通常是本界面 第二個參數是文本內容 第三個參數是持續時間 2.如修改Toast的位置 1.setGravity(int gravity,...

    安卓學習之ListView

     簡單的用法 ListView是一個非常強大的控件,先看看它的簡單用法。 首先,我們在主界面的xml代碼中添加這段代碼 然后我們在MainActivity中使用適配器來生成界面。 效果如下  自定義ListView 1.創建在ListView中的子布局界面 創建要添加的數據類型 創建自己的適配器 使用界面  ...

    安卓學習之ArlertDialog

    1.一般對話框 看代碼 bulider的創立必須傳遞一個上下文,而且必須是view類型的,getApplicationContext也會崩潰。 效果如下: 2.列表對話框 列表對話框就不使用setMessage的而是用setItems()方法,第二給個參數傳遞需要顯示的內容。 toast的時候需要注意,傳遞數組單個的內容,我們可以看到onClick接口存在which參數,你點擊哪一個 列表內容,就...

    安卓學習筆記----淺析安卓生命周期

    1. 簡述 安卓的生命周期有六個,分別為:onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy(),每一個Activity都有這些生命周期,通過這些生命周期,Activity在不存在,停止,暫停和運行之間轉換,如下圖: 2. 通過打印日志信息更深了解生命周期 如果對安卓Logcat工具或是日志打印不了解,請戳此鏈接 用到...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    猜你喜歡

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    精品国产乱码久久久久久蜜桃不卡