将broadcast定义在activity中。通过调用view中的invalidate更新UI。
DEMO代码:
package com.aiai.www;
import com.aiai.www.Ink_LockScreenView.OnCompleteListener;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.Toast;
public class Ink_LockScreenActivity extends Activity {
private Ink_LockScreenView mInkView;
private final String ACT_TIME_TICK = "android.intent.action.TIME_TICK";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
// this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
// WindowManager.LayoutParams.FLAG_FULLSCREEN);
System.out.println("Ink_LockScreenActivity onCreate");
// Ink_LockScreenView.istime24_flag = istime24();
mInkView = new Ink_LockScreenView(this);
//mInkView.setParentActivity(this);
setContentView(mInkView);
mInkView.setOnCompleteListener(new OnCompleteListener()
{
@Override
public void onComplete()
{
Ink_LockScreenActivity.this.finish();
}
@Override
public void onEnterContact() {
// TODO Auto-generated method stub
Ink_LockScreenActivity.this.finish();
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivity(intent);
}
@Override
public void onEnterMms() {
// TODO Auto-generated method stub
Ink_LockScreenActivity.this.finish();
Intent intent = new Intent();
intent = getPackageManager().getLaunchIntentForPackage("com.android.mms");
startActivity(intent);
}
});
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
IntentFilter intentFilter = new IntentFilter(ACT_TIME_TICK);
registerReceiver(mTimeUpdateBCR, intentFilter);
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
unregisterReceiver(mTimeUpdateBCR);
}
private BroadcastReceiver mTimeUpdateBCR = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
System.out.println("time update in activity act:"+intent.getAction());
if(intent.getAction().equals(ACT_TIME_TICK))
{
mInkView.invalidate();
}
}
};
}
html:
<activity android:name=".Ink_LockScreenActivity" >
<intent-filter>
<action android:name="android.intent.action.TIME_TICK" />
</intent-filter>
</activity>