Android学习总结 第四周

1、widget的Resource布局中Layout文件定义常用属性:

<appwidget-provider
    android:height = "wrap_content"
    android:width = "wrap_content"
    android:minWidth = "140dp"
    android:minHeight = "140dp"
    android:previewImage = "@drawable/XXX"
    //界面的布局
    android:initialLayout = "@layout/XXX"
    //刷新频率
    android:updatePeriodMillis = "10000"
> 
 </appwidget-provider>

为根布局 ,其属性必须定义android:minWidth = “XXdp”
2、widget在Manifest中的配置:

        <receiver android:name=".WidgetTest">
            <intent-filter >
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
            </intent-filter>
            <meta-data android:name="android.appwidget.provider" android:resource="@layout/layout_widget"/>
        </receiver>

3、Service的创建与使用
为了使用Service,我们需要新建一个类,让其继承Service类,并重写onBind()方法:

public class MusicService extends Service public IBinder onBind(Intent intent) {
        return null;
    }

当在一个Activity中使用bindService去绑定服务时,服务的onBind方法将被调用,此时我们的Service和Activity之间需要一个“中间人”来进行通信。这个中间人就是Binder类。
我们需要新建一个类继承Binder, 然后在Activity中onServiceConnected中获得此binder,并将其强制转化为我们需要的类型,即可在Activity中调用Service中的方法:

class MusicBinder extends Binder{
    public void pauseMusic(){
            //在binder内部类中调用外部onStopMusic方法
            onPauseMusic();
        }
}

//在Activity中,mMusicBinder已定义为全局变量
mServiceConnection = new ServiceConnection() {
            @Override
            public void onServiceConnected(ComponentName name, IBinder service) {
                mMusicBinder = (MusciBinder) service;
            }
            @Override
            public void onServiceDisconnected(ComponentName name) {

            }
};

此时可以调用mMusicBinder内的pauseMusic方法,即可调用服务内的onPauseMusic方法。

你可能感兴趣的:(Android学习总结 第四周)