repeatingalarm

来源:互联网 发布:js for循环中调用函数 编辑:程序博客网 时间:2024/06/10 00:57
这个例子在如下路径中.
https://developer.android.com/samples/RepeatingAlarm/index.html


先看manifest。
  <application android:allowBackup="true"
        android:label="@string/app_name"
        android:icon="@drawable/ic_launcher"
        android:theme="@style/AppTheme">
 
        <activity android:name=".MainActivity"
                  android:label="@string/app_name"
                  android:uiOptions="splitActionBarWhenNarrow">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>


这个application只包含一个MainActivity的Activity。




MainActivity的onCreate()方法中添加了一个RepeatingAlarmFragment的fragment


public static final String TAG = "MainActivity";
 
    public static final String FRAGTAG = "RepeatingAlarmFragment";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        if (getSupportFragmentManager().findFragmentByTag(FRAGTAG) == null ) {
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            RepeatingAlarmFragment fragment = new RepeatingAlarmFragment();
            transaction.add(fragment, FRAGTAG);
            transaction.commit();
        }
    }




 public boolean onOptionsItemSelected(MenuItem item) {
        if(item.getItemId() == R.id.sample_action) {
 
            Intent intent = new Intent(getActivity(), MainActivity.class);
            intent.setAction(Intent.ACTION_MAIN);
            intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
 
          
            PendingIntent pendingIntent = PendingIntent.getActivity(getActivity(), REQUEST_CODE,
                    intent, 0);
 
 
            int alarmType = AlarmManager.ELAPSED_REALTIME;
            final int FIFTEEN_SEC_MILLIS = 15000;
 
            AlarmManager alarmManager = (AlarmManager)
                    getActivity().getSystemService(getActivity().ALARM_SERVICE);
 
            // setRepeating takes a start delay and period between alarms as arguments.
            // The below code fires after 15 seconds, and repeats every 15 seconds.  This is very
            // useful for demonstration purposes, but horrendous for production.  Don't be that dev.
            alarmManager.setRepeating(alarmType, SystemClock.elapsedRealtime() + FIFTEEN_SEC_MILLIS,
                    FIFTEEN_SEC_MILLIS, pendingIntent);
            Log.i("RepeatingAlarmFragment", "Alarm set.");
        }
        return true;
    }


如果用户点击了action的item,会新建一个PendingIntent来启动MainActivity。
然后会通过AlarmManager 来让这个pendingIntent,每15000ms运行一次


也就是说只要用户点击了这个item,MainActivity会每15000ms运行一次。
0 0
原创粉丝点击