編輯:關於Android編程
四大組件中, Service跟Activity的生命周期非常類似,它也是可執行的.甚至可看做是沒有界面的"Activity", 因為它的運行,用戶並不會像Activity那樣能看到它能呈現出來具體的視圖界面. 同樣,就像Activity一樣, 需要繼承Service來使用它的子類. 並且同樣需要在AndroidManifest.xml中配置所定義的Service.

簡述上面周期中的幾個方法:<喎?/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPjwvcD4KPHA+MSwgyOfNvMq+LFNlcnZpY2UgtcS8uLj2t723qG9uQ3JlYXRlKCksIG9uRGVzdHJveSgpyse4+kFjdGl2aXR50rvR+bXELLa8yse0tL2ous3P+rvZx7C72LX3tcS3vbeoLlNlcnZpY2XU2kFjdGl2aXR5wO+xu7S0vajG9Lavus3No9a5LCDSsr/J0tTU2tfUye3KudPDc3RvcFNlbGYoKcC0zaPWuS48L3A+CjxwPjxicj4KPC9wPgo8cD4yLCBvblN0YXJ0KCkg1NrQwrDmsb7S0b6tsbtvblN0YXJ0Q29tbWFuZCgpy/m0+szmLMjnufvKx9Om08PWp7PWvsmw5rG+tcTPtc2zLNTyvMzQ+NPDb25TdGFydCgpLiAgb25TdGFydCgwILrNb25TdGFydENvbW1hbmQoKSC2vMrHU2VydmljZcb0tq/Ksbvhu9i197XEt723qC4gyOe5+8rHzai5/XN0YXJ0U2VydmljZSgpwLTG9LavU2VydmljZSzEx8O0w7+0zsb0tq+2vLvhu9i1929uU3RhcnRDb21tYW5kKCkg1eK49re9t6guPC9wPgo8cD48YnI+CjwvcD4KPHA+Mywgb25CaW5kKCksIFNlcnZpY2Wxu7DztqjKsbvYtfe1xLe9t6guIDwvcD4KPHA+PGJyPgo8L3A+CjxwPjQsIG9uVW5iaW5kKCksIFNlcnZpY2W6zcv5sPO2qLXEy/nT0EFjdGl2aXR5try2z7+qyrG74bvYtfe4w7e9t6guPC9wPgo8cD48YnI+CjwvcD4KPHA+PHN0cm9uZz7V4sDv0qrHv7X3z8JBY3Rpdml0ecb0tq9TZXJ2aWNltcTBvdbWt723qLrNx/ix8Do8L3N0cm9uZz48L3A+CjxwPkFjdGl2aXR5v8nS1M2ouf1zdGFydFNlcnZpY2UoKSC6zSBiaW5kU2VydmljZSgpIMG9uPa3vbeowLTG9LavLiBzdGFydFNlcnZpY2UoKcb0tq9TZXJ2aWNlLCBBY3Rpdml0ebrNU2VydmljZdauvOTDu9PQudjBqiwgtbFBY3Rpdml0ec3Ls/bByyxTZXJ2aWNlu+G8zND4tObU2rKi1MvQ0C4gtvhiaW5kU2VydmljZSgpILe9yr3G9LavtcS7sCxBY3Rpdml0ebrNU2VydmljZcrH09C52MGqtcQsQWN0aXZpdHmyu732xNy6zVNlcnZpY2XNqNDFLLKix9K1sUFjdGl2aXR5zcuz9sqxLFNlcnZpY2XSsrvh1tDWuS7PwsPmu+HJz7j2wP3X0yzNqLn9tPrC67+0s/bH+LHwOjwvcD4KPHA+PGJyPgo8L3A+CjxoMj7F5NbDt73KvTwvaDI+CjxwPjxwcmUgY2xhc3M9"brush:java;">
**
* 通過StartService()來啟動的Service對象
* @author Mr.Et
*
*/
public class MyStartService extends Service{
private String TAG = "MyStartService";
@Override
public void onCreate()
{
Log.i(TAG, "onCreate()");
super.onCreate();
}
/**
* Service被啟動後會回調該方法
*/
@Override
public int onStartCommand(Intent intent,int flags,int startId)
{
Log.i(TAG, "onStartCommand()");
super.onStartCommand(intent, flags, startId);
return START_STICKY;
}
/**
* (該方法必須被實現)
* 綁定Service時會回調該方法
*/
@Override
public IBinder onBind(Intent intent) {
//這裡默認為空,如果需要傳回Binder對象跟Activity通信
//則可以繼承Binder來實現返回對象即可.
Log.i(TAG, "onBind()");
return null;
}
@Override
public void onDestroy()
{
super.onDestroy();
Log.i(TAG, "onDestroy()");
}
}/**
* 通過bindService()來啟動的Service對象
* @author Mr.Et
*
*/
public class MyBindService extends Service{
private String TAG = "MyBindService";
public class MyBinder extends Binder
{
public void printContent()
{
Log.i(TAG, "print the content in Class - MyBinder.");
}
}
/**
* Service被創建是會回調該方法
*/
@Override
public void onCreate()
{
Log.i(TAG, "onCreate()");
super.onCreate();
}
/**
* Service被啟動後會回調該方法
*/
@Override
public int onStartCommand(Intent intent,int flags,int startId)
{
Log.i(TAG, "onStartCommand()");
super.onStartCommand(intent, flags, startId);
return START_STICKY;
}
/**
* 綁定Service時會回調該方法
*/
@Override
public IBinder onBind(Intent intent) {
Log.i(TAG, "onBind()");
// 返回Binder的子類MyBinder和Activity通信
return new MyBinder();
}
/**
* 如果前面是通過bindService()來綁定啟動Service的,
* 那麼當解綁停止Service時會調用該方法
*/
@Override
public boolean onUnbind(Intent intent)
{
Log.i(TAG, "onUnbind()");
return true;
}
/**
* Service被銷毀前會回調該方法
*/
@Override
public void onDestroy()
{
Log.i(TAG, "onDestroy()");
super.onDestroy();
}
}第一種,startService()啟動Service
Intent StartIntent = new Intent(this,MyStartService.class);
/**
* 通過startService()啟動Service
* 這種方式
*/
private void doStartService()
{
//類似廣播,也可以用setAction("XXX")使特定的Service啟動
//StartIntent.setAction("com.test.service.My_MSG");
//創建Intent,跟跳轉Activity的方式類似
Intent StartIntent = new Intent(this,MyStartService.class);
startService(StartIntent);
}
/**
* 停止Service
*/
private void doStopService()
{
stopService(StartIntent);
}private MyBinder myBinder;
private ServiceConnection conn = new ServiceConnection() {
//當Activity和Service連接成功時會調用該方法
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
//在這裡通過自定義的Binder與Service通信
myBinder = (MyBinder)service;
}
//當Activity和Service斷開連接時會調用該方法
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
}
};
/**
* 通過bindService()啟動(綁定)Service
*/
private void doBindSerive()
{
Intent bindIntent = new Intent();
bindIntent.setAction("com.test.service.My_MSG");
//當Service還沒創建時,
//第三個參數如果為0則不自動創建Service,為Service.BIND_AUTO_CREATE則自動創建
bindService(bindIntent, conn, Service.BIND_AUTO_CREATE);
}
/**
* 解除綁定Service
*/
private void doUnbindService()
{
unbindService(conn);
}系統提供了IntentService, 它是Service的子類.默認新建新的線程在運行. 而Service是缺少這個特質的,因為Service和調用者( 比如某個Activity )是運行在同一個進程中,會直接和調用競爭有限的資源,所以Service不適合用於處理耗時耗資源的任務,否則極易阻塞主線程導致ANR錯誤.
而IntentService 是這一情況的比較好的解決方案. 它自動實現多線程, 會新建工作線程專門處理任務, 同時使用了隊列來管理請求啟動IntentService的各個Intent. 比如當有3個intent都請求該IntentService,那麼IntentService會按照隊列順序依次去新建線程,處理任務,保證在同一時間內只有一個intent在調用該intentService.當調用完畢會intentService會自動停止自身,並處理下一次的調用.直至最後.所以如果使用intentService, 用戶並不需要主動的使用stopService() 或者在intentService中使用stopSelf()來停止.
繼承IntentService必須實現onHandleIntent()方法, 將耗時的任務放在這個方法內即可. 其他方面,IntentService跟普通Service一樣.
android 用paint,canvas 繪圖
(1)主要用了paint ,canvas 兩個類中的方法 (2)主要用了畫線和畫圓的方法。 (3)drawline(起始點軸坐標,起始點y軸坐標,終點軸坐標,終點y軸坐標
Android仿外賣購物車功能
先看看效果圖:知識點分析效果圖來看不復雜內容並沒多少,值得介紹一下的知識點也就下面幾個吧 - 列表標題懸停 - 左右列表滑動時聯動 - 添加商品時的拋物線動畫 - 底部彈
Android應用開發中CardView的初步使用指南
引言在Google I/O 2014上,Google公布了Android L Preview版本,此版本的UI有了非常大的改變,很炫很給力!同時,Google也給出了兩個
Android最佳實踐之高效的應用導航
設計(一)- 規劃Screens和他們之間的關系原文地址:http://developer.android.com/training/design-navigation/