當你有一些程式需要在背景執行時
總是會需要它通知你完成的時候
這時你就可以去規範那個背景程式你需要哪一些狀態通知
例如:
例如你大概知道某個下載程式會有成功與失敗的可能
並且你也需要知道到底是成功還是失敗
那你就可以先定義Interface給該下載程式使用
OnDownLoadCallback.java
DownLoadService.java
MainActivity.java
OnDownLoadCallback.java
public interface OnDownLoadCallback { void onComplete(String message); void onFail(); }在Interface定義有下載成功與失敗
DownLoadService.java
public class DownLoadService { private OnDownLoadCallback mDownLoadcallback; public DownLoadService(OnDownLoadCallback callback) { this.mDownLoadcallback = callback; } //模擬一個八秒的下載 public void startDownLoad() { Thread thread = new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(8000); mDownLoadcallback.onComplete("完成囉!"); } catch (InterruptedException e) { mDownLoadcallback. onFail(); } } }); thread.start(); } }在該下載程式一開始註冊這個CallBack來使用
MainActivity.java
public class MainActivity extends AppCompatActivity implements OnDownLoadCallback { private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DownLoadService downloadservice = new DownLoadService(this); downloadservice.startDownLoad(); } @Override public void onComplete(String message) { Log.i(TAG, message); } @Override public void onFail() { Log.e(TAG, "下載失敗"); } }最後在Main裡面去實作這個CallBack得知觸發的時候以及UI該做什麼事情
沒有留言: