2016-09-17 16 views
0

嘿我从https://developer.android.com/training/notify-user/managing.html 得到这个例子,但没有做任何更改我没有更新我把50通知与功能,但所有50来到一起我怎么能让每一个出现在1或5分钟 只是试过处理程序在我的代码PLZ如何把这个通知的时间..!

MainActivity.java没工作的样子

public class MainActivity extends AppCompatActivity { 


Button button; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    button = (Button) findViewById(R.id.btn1); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      final Calendar calendar = Calendar.getInstance(); 


      Intent intent = new Intent(getApplicationContext(), AlertReceiver.class); 

      final PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
     //  final PendingIntent pendingIntent1 = PendingIntent.getBroadcast(getApplicationContext(), 101, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
     // final PendingIntent pendingIntent2 = PendingIntent.getBroadcast(getApplicationContext(), 102, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

      final AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
     // final AlarmManager alarmManager1 = (AlarmManager) getSystemService(ALARM_SERVICE); 
     //  final AlarmManager alarmManager2 = (AlarmManager) getSystemService(ALARM_SERVICE); 

      alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_FIFTEEN_MINUTES/90, pendingIntent); 
     //  alarmManager1.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_FIFTEEN_MINUTES , pendingIntent1); 
     // alarmManager2.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_FIFTEEN_MINUTES , pendingIntent2); 

     } 
    }); 

} 

AlertReciever.class

public class AlertReceiver extends BroadcastReceiver { 



@Override 
public void onReceive(final Context context, Intent intent) { 
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    final Intent repeating_intent = new Intent(context, Activity12.class); 
    // repeating_intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 100, repeating_intent, PendingIntent.FLAG_UPDATE_CURRENT); 
    NotificationCompat.Builder builder = new NotificationCompat.Builder(context).setContentIntent(pendingIntent) 
      .setSmallIcon(R.drawable.ic_launcher) 
      .setContentTitle("AAA") 
      .setOngoing(false) 

      .setContentText("BBB"); 
    builder.setAutoCancel(true); 


    notificationManager.notify(100, builder.build()); 


    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      for (int a = 0; a < 5; a++) { 
       PendingIntent pendingIntent1 = PendingIntent.getActivity(context, a, repeating_intent, PendingIntent.FLAG_UPDATE_CURRENT); 
       NotificationCompat.Builder builder1 = new NotificationCompat.Builder(context).setContentIntent(pendingIntent1) 
         .setSmallIcon(R.drawable.ic_launcher) 
         .setContentTitle("CCC") 
         .setContentText("DDD") 
         .setOngoing(false) 
         .setAutoCancel(true); 

       int numMessages = 0; 

       builder1.setContentText("addsadasdadad") 
         .setNumber(++numMessages); 

       builder1.setAutoCancel(true); 
       NotificationManager notificationManager1 = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 

       notificationManager1.notify(a, builder1.build()); 

      } 
     } 
    }, 1 * 60 * 1000); 

回答

0

以下的代码帮你。

Handler mHandler=new Handler; 
mHandler.postDelayed(mRunnable, 60000); 

Runnable mRunnable=new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     // your notification code 
     mHnadler.postDelayed(mRunnable ,60000); 

    } 
} 
+0

我应该mRunnable我参考? – CJS

+0

我得到覆盖运行的问题 – CJS

+0

runnable是一个接口,用于在mainthread中处理您的请求。并在您的案件请求显示通知。 正确地创建可运行对象。它不会给出覆盖问题。 –

0

使用此方法//设置alaram(把时间accroding到需要)

public static void setAlarm(Context context, String action, int actionCode, long syncTime) 
    { 
     AlarmManager alarmMgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     Intent intent = new Intent(action); 
     intent.putExtra(ACTION, actionCode); 
     PendingIntent alarmIntent = PendingIntent.getBroadcast(context, actionCode + 1000, intent, 0); 
     alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + (interval), interval, alarmIntent); 
    } 

//把意图reciver

public class AlarmIntentReceiver extends BroadcastReceiver 
{ 

    public static final int ACTION_NAME= 101; 


    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     int action = intent.getIntExtra(AlarmUtil.ACTION, 0); 
     switch(action) 
     { 
      case ACTION_XYZ: 
//perform action according to need   
break; 
     } 
    } 
} 
+0

我应该在这里放置5分钟+(间隔),间隔, – CJS

+0

没有你在这里像SystemClock.elapsedRealtime()+ 5,5(这里5分钟是间隔) –

+0

我喜欢你写了,但我不能在onclicklistener – CJS