AndroidシンプルActivityとServiceのインタラクティブコード


http://rayln.iteye.com/blog/1179463
Activityはどのように相互作用し、Activityコントロールを更新しますか?例:Broadcast 1 Activity.java
Javaコード 
收藏代码
    package com.cn;  
      
    import android.app.Activity;  
    import android.content.Intent;  
    import android.content.IntentFilter;  
    import android.os.Bundle;  
    import android.view.View;  
    import android.view.View.OnClickListener;  
    import android.widget.Button;  
      
    public class Broadcast1Activity extends Activity {  
        /** Called when the activity is first created. */  
        private static String SMS_ACTION = "com.webabcd.service.msg";  
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.main);  
            Button btn1 = (Button)findViewById(R.id.button1);  
            btn1.setOnClickListener(new OnClickListener() {  
                @Override  
                public void onClick(View v) {  
                    SMSReceiver r = new SMSReceiver();  
                    IntentFilter intent = new IntentFilter();  
                    intent.addAction(SMS_ACTION);  
                    Broadcast1Activity.this.registerReceiver(r, intent);  
                }  
            });  
        }  
        //button onclick    
        public void startService(View v){  
            Intent i = new Intent(Broadcast1Activity.this,StartService.class);  
            System.out.println("111");  
            this.startService(i);  
            System.out.println("222");  
        }  
    }  

SMSReceiver.java(ブロードキャスト受信クラス)
Javaコード 
收藏代码
    package com.cn;  
      
    import android.content.BroadcastReceiver;  
    import android.content.Context;  
    import android.content.Intent;  
    import android.widget.Button;  
      
    public class SMSReceiver extends BroadcastReceiver {  
      
        @Override  
        public void onReceive(Context context, Intent intent) {  
            System.out.println("have recevie message");  
            Broadcast1Activity b = (Broadcast1Activity)context;  
            Button button1 = (Button)b.findViewById(R.id.button1);  
            System.out.println(button1.getText());  
        }  
      
    }  

StartService.java
Javaコード 
收藏代码
    package com.cn;  
      
    import android.app.Service;  
    import android.content.Intent;  
    import android.os.IBinder;  
      
    public class StartService extends Service {  
      
        @Override  
        public IBinder onBind(Intent intent) {  
            System.out.println("onBind");  
            return null;  
        }  
          
        @Override  
        public void onCreate() {  
            System.out.println("onCreate");  
            super.onCreate();  
        }  
      
        @Override  
        public void onStart(Intent intent, int startId) {  
            System.out.println("onStart");  
            sendMsg("send msg");  
            super.onStart(intent, startId);  
        }  
      
        @Override  
        public int onStartCommand(Intent intent, int flags, int startId) {  
            System.out.println("onStartCommand");  
            return super.onStartCommand(intent, flags, startId);  
        }  
      
        public void sendMsg(String msg){  
             //         action ( :     action   receiver       )     
            Intent intent = new Intent("com.webabcd.service.msg");     
            //             
            intent.putExtra("msg", msg);     
            //          
            this.sendBroadcast(intent);     
        }  
      
    }  

AndroidManifest.xml
Javaコード 
收藏代码
    <?xml version="1.0" encoding="utf-8"?>  
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
          package="com.cn"  
          android:versionCode="1"  
          android:versionName="1.0">  
        <uses-sdk android:minSdkVersion="8" />  
      
        <application android:icon="@drawable/icon" android:label="@string/app_name">  
            <activity android:name=".Broadcast1Activity"  
                      android:label="@string/app_name">  
                <intent-filter>  
                    <action android:name="android.intent.action.MAIN" />  
                    <category android:name="android.intent.category.LAUNCHER" />  
                </intent-filter>  
            </activity>  
            <service android:name=".StartService" />  
        </application>  
    </manifest>  

この例では、Activityからブロードキャスト受信クラスを完全に起動し、サービスを起動し、サービスからActivityにメッセージを送信する