- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我已经在 Android 中完成了一个进程,该进程将调用包含日历事件的网络服务。我已成功解析事件并将其添加到 android 日历中。我使用 asynctask 来做到这一点。但是现在即使应用程序处于最小化状态,这个过程也必须每 30 秒运行一次。我上网发现我们可以使用thread,aynstask,service,alarm receiver来实现。但我对这些事情一无所知。如果有人知道,请帮助我。
我的异步任务:
public class SyncCalendar extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
progressdialog = new ProgressDialog(MainActivity.this);
progressdialog.setCancelable(true);
progressdialog.setMessage("Fetching Appointments and Tasks...");
progressdialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressdialog.setProgress(0);
progressdialog.show();
}
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
String taskresult = getCalendarData();
Log.d("test", "" + taskresult);
return taskresult;
}
protected void onPostExecute(String taskresult) {
if (taskresult != "" && taskresult != null) {
try {
if (response.contains("Appointment")) {
Log.e("called", "called");
try {
leadna_leadAppointaray = leadna_leadSyncCalendar
.getJSONArray("Appointment");
if(leadna_leadAppointaray.length()!=0){
for (int i = 0; i < leadna_leadAppointaray
.length(); i++) {
Log.e("called", "called"+i);
JSONObject c = leadna_leadAppointaray
.getJSONObject(i);
String startDate = c.getString("StartDate");
String[] startDatearay = startDate.split("\\-");
String endDate = c.getString("EndDate");
String[] endDatearay = endDate.split("\\-");
String startTime = c.getString("StartTime");
String[] startTimearay = startTime.split("\\:");
String endTimeData = c.getString("EndTime");
String[] endTimearay = endTimeData.split("\\:");
long calID = 1;
long startMillis = 0;
long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(
Integer.parseInt(startDatearay[0]),
Integer.parseInt(startDatearay[1]),
Integer.parseInt(startDatearay[2]),
Integer.parseInt(startTimearay[0]),
Integer.parseInt(startTimearay[1]));
startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(Integer.parseInt(endDatearay[0]),
Integer.parseInt(endDatearay[1]),
Integer.parseInt(endDatearay[2]),
Integer.parseInt(endTimearay[0]),
Integer.parseInt(endTimearay[1]));
endMillis = endTime.getTimeInMillis();
ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
SimpleDateFormat formatter = new SimpleDateFormat(
"dd/MM/yyyy");
String dateString = formatter.format(new Date(
startMillis));
String edateString = formatter.format(new Date(
startMillis));
Log.e("Date", dateString);
Log.e("EDate", edateString);
values.put(Events.DTSTART, startMillis);
values.put(Events.DTEND, endMillis);
values.put(Events.TITLE, c.getString("Subject"));
values.put(Events.DESCRIPTION,
c.getString("Descrip"));
values.put(Events.EVENT_LOCATION,
c.getString("Location"));
values.put(Events.CALENDAR_ID, calID);
values.put(Events.EVENT_TIMEZONE,
"America/Los_Angeles");
Uri uri = cr.insert(Events.CONTENT_URI, values);
Log.e("called", "called");
}
}
leadna_leadTaskaray = leadna_leadSyncCalendar
.getJSONArray("Task");
if(leadna_leadTaskaray.length()!=0){
for (int i = 0; i < leadna_leadTaskaray
.length(); i++) {
Log.e("called", "called"+i);
JSONObject c = leadna_leadTaskaray
.getJSONObject(i);
String taskDateTime = c.getString("task_date");
SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd hh:mm"); // I assume d-M, you may refer to M-d for month-day instead.
Date date = formatter1.parse(taskDateTime); // You will need try/catch around this
long millis = date.getTime();
Log.e("taskDateTime",String.valueOf(millis));
long calID = 1;
long startMillis = 0;
long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
//beginTime.set();
startMillis = millis;
Calendar endTime = Calendar.getInstance();
/*endTime.set(Integer.parseInt(Date[0]),
Integer.parseInt(Date[1]),
Integer.parseInt(Date[2]),
Integer.parseInt(Time[0]),
Integer.parseInt(Time[1]));*/
endMillis = millis;
ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
SimpleDateFormat formatter = new SimpleDateFormat(
"dd/MM/yyyy");
String dateString = formatter.format(new Date(
startMillis));
String edateString = formatter.format(new Date(
startMillis));
Log.e("Date", dateString);
Log.e("EDate", edateString);
values.put(Events.DTSTART, startMillis);
values.put(Events.DTEND, endMillis);
values.put(Events.TITLE, c.getString("task_title"));
values.put(Events.DESCRIPTION,c.getString("task_note"));
values.put(Events.CALENDAR_ID, calID);
values.put(Events.EVENT_TIMEZONE,
"America/Los_Angeles");
Uri uri = cr.insert(Events.CONTENT_URI, values);
Log.e("called", "called");
}
}
progressdialog.cancel();
} catch (Exception e) {
}
}
} catch (Exception e) {
}
}
}
public String getCalendarData() {
Date date1 = new Date();
SimpleDateFormat postFormater = new SimpleDateFormat("yyyy-MM-dd");
String toDate = postFormater.format(date1);
URLSyncCalendar = URLSyncCalendar + "&today=" + toDate
+ "&userId=" + LoginActivity.user_id + "&clientId="
+ LoginActivity.user_client_id;
System.out.println("URL-->>" + URLSyncCalendar);
try {
BufferedReader inStream = null;
OutputStream out = null;
HttpURLConnection httpconn = null;
URI uri = new URI(URLSyncCalendar);
URL url = uri.toURL();
httpconn = (HttpURLConnection) url.openConnection();
httpconn.setDoOutput(true);
out = httpconn.getOutputStream();
httpconn.connect();
out.flush();
inStream = new BufferedReader(new InputStreamReader(
httpconn.getInputStream()));
if ((response = inStream.readLine()) != null) {
try {
leadna_leadSyncCalendar = new JSONObject(response);
} catch (JSONException e1) { // TODO Auto-generated catch //
// block
e1.printStackTrace();
}
}
out.close();
httpconn.disconnect();
} catch (Exception e) {
}
return response;
}
}
最佳答案
你绝对应该使用 Service为了这。不过还有一件事。永远不要每 30 秒向服务器发送一次请求。想象一下,每 30 秒有 100 万个客户端应用程序发送请求。或者,一台设备上安装了 50 个应用程序。讲道理。
关于android - 即使在应用程序最小化状态下,如何始终运行 asynctask?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24145705/
我有一个关于 DFA 最小化的问题。所以我使用了众所周知的技术将正则表达式转换为 NFA,然后使用 goto/closure 算法从中构造 DFA。现在的问题是如何将其最小化?我在这里看过有关它的课文
这是我的代码,当鼠标光标悬停在 TPanel 上时,它会“动画化”它。我还有一个代码块来取消它的动画。 procedure Tmain.pStarting1MouseEnter(Sender: TOb
我有图像 slider ,其中图像在超时时相互替换。我使用 jQuery 函数 setInterval() 但有一个小问题,在最小化浏览器窗口后,该函数继续“工作”,并且我恢复浏览器窗口图像的位置以令
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How can I stop a double click of the window title bar
当我在我的 Windows 窗体应用程序中单击最小化按钮时,我不希望它执行经典的 Windows 最小化动画(窗口下降到任务栏)。 据我所知,没有最小化事件,我只能使用调整大小,但我不知道如何检测我是
首先 - 对不起我的英语。 我刚刚创建了 Android 应用程序。它包含几个 Activity ,并在此应用程序的背景下播放音乐。当用户以某种方式(通过单击“后退”按钮、主页按钮或其他方式)离开应用
我需要帮助编写一个程序,该程序以 (X,Y) 的形式给出指定数量的坐标点。将给出的点数是程序中的第一行;它可以通过扫描仪读取。 我需要计算覆盖线 x = a 和 y = b 的所有点的最小面积。因此,
我需要一个 Activity 返回到上一个 Activity ,但如果再次单击该按钮,它将恢复上次的 Activity 。这是所需的过程:我点击一个按钮, Activity 开始。如果我点击“后退”按
随着这个动画变得越来越复杂,我不断添加参数,以便它们在每次回调时可用。目前共有 6 个。 例如,现在我想在显示消息时禁用输入框,因此我必须添加另一个元素 - in_element; 电话: M
这是一个基于对话框的 MFC 应用程序。我并没有故意添加任何关于最小化、最大化和恢复按钮的代码。它可以首先显示那些按钮。但它在长时间运行后就会消失。或者计算机的 sleep 可能导致此问题? 我不知道
如何使用 Windows API 禁用窗口的最大化和/或最小化功能?最大化/最小化框需要变灰并禁用,双击标题栏、拖动到屏幕顶部等也需要不起作用。 最佳答案 您可以调用 SetWindowLong/Se
是否有任何已知的算法帽子可以解决以下问题:我们有一个 session ,有多个同时会谈。用户应标记感兴趣的会谈,然后我们要创建一个会谈时间表,以便我的大多数人都可以参加他们的会谈并最大限度地减少日程冲
目前我负责为一个小项目开发一个(C++)窗口类;目标是将依赖性保持在最低限度。Win32/WinAPI 的实现按预期工作,但是,当涉及到 Linux/XCB 时,我正在努力。 我知道,我可以检查“_N
windows C++编程,如何让事件窗口最大化或最小化? 对于鼠标按下事件,我们使用类似 mi.dwFlags = MOUSEEVENTF_LEFTDOWN 的东西,并使用 SendInput()
我编写了以下获取 2 个参数的构造函数,如果值(x 或 y)为负,它将被初始化为零。 public Point1 ( int x , int y ) { //if one or
我有以下代码,如果我将导航窗口最大化,它运行良好,但是当我最小化它时它停止工作。 更多细节: 当窗口最小化时,“scrollDown & scrollTop”函数停止执行。 'use strict'
我有一个包含一些宏和用户表单的 Excel 文件。 我不希望用户在没有密码的情况下访问文件本身。他们应该只能看到用户表单并通过用户表单输入数据。 这是我目前拥有的代码。 Private Sub Wor
目前,我正在尝试训练一个同时具有复值张量作为输入和输出的网络。作为损失函数,我采用输出与真实值之间逐点差异的范数。 当我尝试最小化损失函数时,tensorflow 的“最小化”函数提示意外的复数。我觉
这个函数是我想要优化的主力。任何关于如何限制其内存使用的想法都会很棒。 function F(len, rNo, n, ratio = 0.5) s = zeros(len); m = co
在 Qt 下的 Windows Mobile 和 Symbian 平台上,如何通过单击应用程序中的某个按钮来最小化我的应用程序? 最佳答案 大概QWidget::setWindowState将适合您,
我是一名优秀的程序员,十分优秀!