IntentService

IntentService是什麼? IntentService是Service的一種,使用上較為方便簡單。其背景執行方式是透過 HandleThread,因此單個IntentService上的任務是循序執行的,可以保證執行緒安全。不同的IntentService在執行上也不會互相干擾。 IntentService適合用於客戶端不須和Service互動的情況下,基本上由客戶端呼叫startService並指定啟動的IntentService。 簡單的IntentService實作 public class SimpleIntentService extends IntentService { public SimpleIntentService() { super("SimpleIntentService"); } @Override protected void onHandleIntent(Intent intent) { } } onHandleIntent方法會執行在新的執行緒上,也是放置耗時操作的位置。其參數intent就是從客戶端傳遞過來的intent。 另外需要在AndroidManifest.xml宣告該IntentService <service android:exported="false" android:name=".simpleintentservice.SimpleIntentService"> </service> android:exported="false"代表是否可以由其他的App啟動。 ...

Error: Default interface methods are only supported starting with Android N (--min-api 24)

這是在 Android Studio 中套用了 androidx.core 之後出現的問題,build project 出現以下錯誤: Error: Default interface methods are only supported starting with Android N (--min-api 24): android.view.MenuItem androidx.core.internal.view.SupportMenuItem.setContentDescription(java.lang.CharSequence) 解決方法有 2 種: 1. 在 /app/build.gradle 修改 minSdkVersion 為 24 android { ... defaultConfig { ... minSdkVersion 24 ... } ... }   2.在 /app/build.gradle 加入以下內容 android { ... compileOptions { sourceCompatibility = '1.8' targetCompatibility = '1.8' } ... }   Orignal From: Error: Default interface methods are only supported starting with Android N (--min-api 24)...

Google Cloud Source Repositories(GCSR) 如何將遠端的 Repo clone 到本地端

問題 想將 Google Cloud Source Repositories 已存在的遠端 repo clone 到本地端 方案 1.安裝 Google Cloud SDK(已安裝請忽略) 2.開啟 Google Cloud SDK Shell 並使用指令移動到想放置本地端 repo 的路徑 3.使用瀏覽器開啟 Cloud Source Repositories 的遠端 repo 頁面(以下為 hello-world 的示範頁面) 4.點擊右上方的"建立本機副本"並選擇 "Google Cloud SDK" 再複製"透過指令列複製存放區"的指令(這個指令就是把遠端 repo clone 到本地端的指令)5.將第4步驟複製的指令貼到第2步驟開啟的 Google Cloud SDK Shell 中並執行(如下畫面) 6.完成(在本地端應該可以看到從遠端 clone 下來的 repo)   Orignal From: Google Cloud Source Repositories(GCSR) 如何將遠端的 Repo clone 到本地端...

Model in todo-mvp

概述 透過todo-mvp來說明MVP中的Model todo-mvp 是 Android 官方用來說明 MVP Pattern的範例,參考 https://github.com/googlesamples/android-architecture   todo-mvp 裡的 Model 為TaskRepository,TaskRepository繼承TasksDataSource,而TaskDataSource實際上是一個interface,其中2個內部介面LoadTasksCallback和GetTasksCallback用來作callback使用,內部介面的onTasksLoaded方法用來當取得task成功之後把task傳回呼叫點的用途,而onDataNotAvailable方法用來當取得task失敗後的後續處理。   其餘在TasksDataSource介面的方法都是存取資料的共用方法,只要是Model都要實作這些方法。 TasksDataSource.java public interface TasksDataSource { interface LoadTasksCallback { void onTasksLoaded(List<Task> tasks); void onDataNotAvailable(); } interface GetTaskCallback { void onTaskLoaded(Task task); void onDataNotAvailable();...

如何從 adb 啟動 App 並帶參數

概述 如何從adb啟動App並帶參數 做法 以todo-app為例,使用adb啟動App使用的指令為 adb shell am start -n [PACKAGE-NAME]/[ACTIVITY-NAME] 因此需要先找到PACKAGE-NAME 和 ACTIVITY-NAME 1.找PACKAGE-NAME 先安裝 todo App 到裝置上 1.1輸入以下指令便會列出 App 上所有已安裝的 PACKAGE-NAME adb shell pm list packages -f 若連接多台裝置則使用 -s 指定裝置號碼如下 adb -s DeviceNumber shell pm listpackages -f 如何取得裝置號碼則使用 adb devices 輸入adb shell pm list packages -f 之後回傳的內容可能太長,因此可以在指令的最後加上 > D:\testlog\get_packages.txt 將顯示內容輸出到D:\testlog\get_packages.txt 因此輸入 adb -s DeviceNumber shell pm list packages -f > D:\testlog\get_packages.txt 在d:\testlog\get_packages.txt尋找todo關鍵字,只找到一項如下 package:/data/app/com.example.android.architecture.blueprints.todomvp.mock-1/base.apk=com.example.android.architecture.blueprints.todomvp.mock ...

使用 Stetho 查看實體裝置的資料庫內容

概述 Stetho 為 Facebook 出品的開源 Android 調試工具(官網連結),主要功能有網路抓包,查看資料庫,查看視圖階層等等。本篇主要描述如何使用 Stetho 查看實體裝置的資料庫內容。 步驟 1.Dependencies 在 Module 的 build.gradle 加入以下內容 dependencies { …     implementation 'com.facebook.stetho:stetho:1.5.0' }   2.在 App 的 Source Code 初始化 Stetho 在 App 第一個啟動 Activity 的 onCreate 方法或新增一個類別繼承 Application 的 onCreate方法加入Stetho.initializeWithDefaults(this); public class SingletonApplication extends Application { public void onCreate() { super.onCreate(); Stetho.initializeWithDefaults(this); } }   3.啟動 Stetho 工具 開啟 chrome 瀏覽器並輸入 chrome://inspect 就會開啟 Stetho 工具,Stetho 工具的用途為提供管理所有可調試元件的介面。在紅框內即為連接的實體裝置 4.啟動...

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Affiliate Network Reviews