2015-05-25 08:51:22 Richer1997 阅读数 901

方法一:

[self performSelector:@selector(popEvent) withObject:nil afterDelay:0.5];

//[menuView mainMenuReload];



方法二:

 dispatch_time_t delayTime = dispatch_time(DISPATCH_TIME_NOW, 2.0*NSEC_PER_SEC);

                dispatch_after(delayTime, dispatch_get_main_queue(), ^{

//                    [self.navigationController popToRootViewControllerAnimated:YES];

                });


2016-11-01 10:49:12 name_jj 阅读数 203

1.在appDelegate.h中声明后台任务标识符


@property (nonatomic,unsafe_unretained)UIBackgroundTaskIdentifier backgroundTaskIdentifier;


2.在,程序进入后台的方法当中添加如下代码,并在程序再次进入后台时,取消后台任务


- (void)applicationDidEnterBackground:(UIApplication *)application {


    NSLog(@"程序进入后台了");

    UIApplication* app = [UIApplicationsharedApplication];

    self.backgroundTaskIdentifier = [appbeginBackgroundTaskWithExpirationHandler:^{

        [app endBackgroundTask:self.backgroundTaskIdentifier];

        self.backgroundTaskIdentifier =UIBackgroundTaskInvalid;


    }];

    //后台需要执行的任务   180s

    //[self doInBackgroundTask];

}


- (void)applicationWillEnterForeground:(UIApplication *)application {

    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.

    [application endBackgroundTask:self.backgroundTaskIdentifier];

    self.backgroundTaskIdentifier =UIBackgroundTaskInvalid;

    

}

2018-08-16 10:26:46 aiwo035 阅读数 1409

ios的这个应用退出,js不执行的bug看了好多人写的都有误差,和偏差不是很正确,这个是优化后的

send_verify_code(){ // 验证码倒计时

       this.count=60;//60s倒计时

       this.show_timer=false;//显示文字状态

       this.timerCodeMsg=this.count+' s';//赋值60s

      var beginTime=new Date().getTime();//计算倒计时当前时间

      this.timer=setInterval(() => {//定时器

             var newTime=new Date().getTime();//获取当前时间,假设退出应用

             this.num++;//记入延迟时间1秒的叠加

             var dTime=parseInt((newTime-beginTime)/1000-this.num);//退出应用总共时间

           if (this.count > 0 && this.count <= 60) {

            this.count--;

          //退出应用获取时间在走js不执行如果时间差小于0重置count为0

            if(this.count-parseInt(dTime)<=0){

              this.count=0

              this.timerCodeMsg=(this.count)+' s';

            }else{

             this.timerCodeMsg=(this.count-parseInt(dTime))+' s';

           }

          } else {

           clearInterval(this.timer);

           this.show_timer=true;

           this.timerCodeMsg='重发校验码';

           this.num=0//假设时间差为负数重置为0

           this.timer = null;

         }

    }, 1000)

},

2016-05-05 12:21:42 TLD_DLT 阅读数 725

在web应用中,对存储在数据库中的待推送消息取出并推送到对应的IOS设备。

环境以及开发包:

  • JDK - 1.7
  • apns-0.1.5-jar-with-dependencies.jar(ios推送用)

定时任务

在Web应用启动后,开启一条线程,每隔15s执行一次查询,取出待推送的消息。

  • 设置定时器
import java.util.Timer;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;


public class TimerPush implements ServletContextListener {

     public static final long PERIOD_MIN = 1 * 15000; //间隔15s
     public static final long DELAY = 1 * 5000; //延迟执行5s
     private Timer timer;

///************* 在Web应用启动时初始化任务 ******************/  
     public void contextInitialized(ServletContextEvent event) {   
         timer = new Timer("****启动推送任务****",true);  //定义定时器   
         timer.schedule(new PushTask(),DELAY, PERIOD_MIN);  //启动PushTask任务,每15s执行一次,延迟执行5s

     }

///************** 在Web应用结束时停止任务 *******************/  
     public void contextDestroyed(ServletContextEvent event) {   
         timer.cancel(); // 定时器销毁   
     }   

}
  • 启动定时任务
import java.util.TimerTask;

public class PushTask extends TimerTask {
    private static boolean isRunning = false;

    public void run() {    
        if (!isRunning) {    
            isRunning = true;    
            System.out.println("开始执行任务...");
        ///********** 开线程查询是否有待推送任务并进行推送 *******************/
        /**
        若使用run线程,查询事务会在web应用结束后才结束,那么推送成功之后,推送结果就无法保存到数据库(已经避免了不可重复读取)。
        **/  
            SqlThreadForPush sqlThread = new SqlThreadForPush();//查询以及推送
            Thread thread = new Thread(sqlThread);
            thread.start();
            isRunning = false;
            thread.interrupt();
            try{
                thread.join();
            }catch (InterruptedException e){
                e.printStackTrace();
            }
        ///********** 结束查询线程 *******************/  
            System.out.println("本次任务已结束..."); //任务结束
        }else {    
            System.out.println("上一次任务执行还未结束..."); //上一次任务未结束   
        }
    } 
}

IOS推送

此处为简单的推送情况


import com.notnoop.apns.APNS;
import com.notnoop.apns.ApnsService;

/*
 * 查询当前待推送任务
 */
public class SqlThreadForPush extends PushTask implements Runnable{

    public void run(){
        ApnsService service =
                APNS.newService()
                .withCert("/tools/apns/123.p12", "123456") ///证书位置,证书密码
                .withSandboxDestination() //测试和发布地址不同
                .build();

        try {
            service.testConnection();

            String payload = APNS.newPayload().alertBody("有无收到,我系Mjay").badge(1).sound("default").build();//body放推送内容,badge就是应用上显示的数字
            String token = "00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000";//ios设备号
            service.push(token, payload);
        } catch (Exception e) {
            e.printStackTrace();
            return ;
        }
        System.out.println("已保存本次推送结果..."); //任务结束
    }
}
2013-11-16 19:18:10 sqq521 阅读数 13826

原文地址:点击打开链接

一:普通的for循环

    NSArray *colorArray = @[[UIColor iOS7redColor],[UIColor iOS7orangeColor],[UIColor iOS7yellowColor],[UIColor iOS7greenColor],[UIColor iOS7purpleColor],[UIColor iOS7pinkColor]];
    NSArray *textArray = @[@"red",@"orange",@"purple",@"pink",@"dark gray",@"light gray"];
    
    for (NSUInteger i = 0; i < 10; i++)
    {
        CGFloat originY = 40.0f * i + 20;
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(60.0f, originY, 200.0f, 40.0f)];
        [self.view addSubview:label];
        
        label.textColor = colorArray[i];//----------
        label.textAlignment = NSTextAlignmentCenter;
        label.font = [UIFont boldSystemFontOfSize:24.0f];
        label.text = textArray[i];
    }

二:使用 for + in

    for (PXAlertView *av in self.alertViews) {
        if (av != alertView) {
            [av hide];
        }
    }

三:使用block

//循环输出
NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@"a",@"b",@"abc",nil];
NSMutableArray *mArrayCount = [NSMutableArray arrayWithCapacity:1];
[mArray enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock: ^(id obj,NSUInteger idx, BOOL *stop){
    [mArrayCount addObject:[NSNumber numberWithInt:[obj length]]];
    NSLog(@"%@",obj);
}];



ios笔记

阅读数 34

iOS 程序启动顺序

阅读数 288

没有更多推荐了,返回首页