gpt4 book ai didi

Android:在服务内的 TimerTask 中实例化处理程序

转载 作者:行者123 更新时间:2023-11-30 04:50:08 26 4
gpt4 key购买 nike

我正在尝试使用服务定期调用我的 API。我用来进行外部 HTTP 调用的异步类将信息返回给传入的处理程序。

下面的简化版本死于实例化处理程序的行(没有堆栈跟踪)。知道为什么吗?有没有更好的方法我应该这样做?

package com.fred.services;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Service;
import android.content.Intent;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;

public class NotificationService extends Service {

private static final String TAG = "com.fred.services NotificationService";

public long delay = 0;
public long period_in_minutes = 10;
public long period = 1000*60*period_in_minutes;

private Timer timer = null;
private TimerTask task = new TimerTask() {
@Override
public void run() {
Handler h;
Log.i(TAG, "now you see it");
h = new Handler();
Log.i(TAG, "now you don't");
}
};

@Override
public void onCreate(){
super.onCreate();
if (timer == null) startservice();
}

private void startservice() {
if (timer == null) timer = new Timer();
timer.scheduleAtFixedRate(task, delay, period);
}

@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}

}

最佳答案

Is there a better way I should be doing this?

使用 AlarmManagerIntentService。这允许您的代码保持在内存不足的状态,除非它实际为用户增加值(value)(即访问您的 Web 服务)。

关于Android:在服务内的 TimerTask 中实例化处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3740223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com