AlarmManager之定时刷新

来源:互联网 发布:姚安濂事件知乎 编辑:程序博客网 时间:2024/05/16 23:50

这是我写的一个定时刷新程序,这里只实现定时功能

首先要在自己想要定时刷新的firstActivity.java的oncreate()方法里加上:
        //先注册一个AlarmManager
        Intent i = new Intent(this, MyTestService1.class);
        PendingIntent sender = PendingIntent.getBroadcast(this, 0, i, 0);
        AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
        //设置重复时间
        am.setRepeating(AlarmManager.RTC, 0, REPEATTIME, sender);
        
        //注册一个CommandReceiver
        CommandReceiver doCommand=new CommandReceiver();
        IntentFilter filter1=new IntentFilter();
        filter1.addAction("UPDATESET");
        registerReceiver(doCommand, filter1);
        startService(new Intent(this,CommandReceiver.class));

 

//这里我写了一个内部类,用于接收action,在这可以直接调用刷新方法

public class CommandReceiver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals("UPDATESET")){
            Toast.makeText(context, R.string.refresh, Toast.LENGTH_SHORT).show();
            pd = ProgressDialog.show(context,null,getString(R.string.loading),true,false);
            refresh();
            }
        }

}

MyTestService1 .java类为:

//接收AlarmManager发过来的请求并处理
public class MyTestService1 extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {    
        //因为BroadcastReceiver并不能直接发送一个action给firstAactivity接收,所以这
        //里我就间接的通过启动另一个activity来发送action
        Intent intent2 = new Intent(context,RefershActivity.class);
        intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent2);
    }
}

RefershActivity .java
//通过这个类给firstAactivity发送action,这样就可以触发CommandReceiver,达到定时刷新的效果
public class RefershActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
        Intent inset=new Intent("UPDATESET");
        sendBroadcast(inset);
        this.finish();
    }

}

MyTestService1 .java注册为:

<application android:icon="@drawable/icon" android:label="@string/app_name">
        <receiver android:name=".MyTestService1"/>

......

</application>

原创粉丝点击