在service中彈出toast,需要使用handler,
1 handler.post(new Runnable() { 2 @Override 3 public void run() { 4 Toast.makeText(this, "重啟服務", 1).show(); 5 } 6 });
在service中彈出dialog,寫着跟activity同樣代碼會報錯。
因為這個dialog顯示時是需要依賴一個activity,如何需要在service中顯示需要把dialog設置成一個系統的dialog,即全局性質的提示框。
1 dialog.getWindow().setType((WindowManager.LayoutParams,TYPE_SYSTEM_ALERT));
//在dialog show 方法之前添加這個代碼,表示該dialog是系統的dialog。
注意:
使用系統dialog,需要在清單文件中添加權限:
1 android.permission.SYSTEM_ALERT_WINDOW
e.g.
1 Builder builder = new AlertDialog.Builder(this); 2 builder.setMessage("是否重啟服務"); 3 builder.setNegativeButton("取消", new OnClickListense() { 4 @Override 5 public void onClick(DialogInterface dialog, int which) { 6 // to do 7 } 8 }); 9 builder.setPositiveButton("確定", new OnClickListense() { 10 @Override 11 public void onClick(DialogInterface dialog, int which) { 12 // to do 13 } 14 }); 15 final AlertDialog dialog = buidler.create(); 16 //在dialog show前添加此代碼,表示該dialog屬於系統dialog。 17 dialog.getWindow().setType((WindowManager.LayoutParams.TYPE_SYSTEM_ALERT)); 18 new Thread() { 19 public void run() { 20 SystemClock.sleep(2000); 21 hanlder.post(new Runnable() { 22 @Override 23 public void run() { 24 dialog.show(); 25 } 26 }); 27 }; 28 }.start();
