有人可以向我解释一下UI线程到底是什么吗?在developer.android.com上,它说的是runOnUiThread函数
public final void runOnUiThread(Runnable action)
从以下版本开始:API Level 1在UI线程上运行指定的操作.如果当前线程是UI线程,则立即执行该操作.如果当前线程不是UI线程,则将操作发布到UI线程的事件队列.
UI线程是否意味着每次通过某些ui活动(如来电或屏幕调暗等)将活动推送到后台时都会运行此线程?如果没有,UI线程到底包含什么?
谢谢
有相关的问题,例如如何将2个参数传递给AsyncTask类?但是我遇到了徒劳地尝试将多个原语作为参数传递给AsyncTask的困难,所以我想分享我发现的东西.在现有的问题和答案中没有捕捉到这种微妙之处,所以我想帮助那些遇到与我一样的问题的人,并为他们省去痛苦.
问题是:我有多个原始参数(例如两个long),我想传递给AsyncTask以在后台执行 - 它怎么能完成?(我的回答......经过一段时间的挣扎......可以在下面找到.)
我已经和Swift和iOS合作了好几个月了.我熟悉许多方法,但我不够好,我可以不用看就写出来.我很欣赏Stack Overflow过去提供的快速答案,让我回到正轨,我已经生锈了(例如,AsyncTask Android示例).
iOS UITableView对我来说属于这一类.我已经完成了几次,但我忘记了细节.我在StackOverflow上找不到另一个问题,只是要求一个基本的例子,我正在寻找比许多在线教程更短的东西(虽然这个非常好).
我将在下面提供一个答案供我将来参考和你的.
我使用Jersey Framework和Java在Netbean IDE中编写了一个REST Web服务.
对于用户需要提供用户名和密码的每个请求,我知道此身份验证不是最佳做法(使用curl命令,如:)curl -u username:password -X PUT http://localhsot:8080/user.
现在我想从Android类调用REST Web服务.
我该怎么办?
我有一个使用DefaultHttpClient和的Android类CredentialUsernameAndPassword,但是当我在Eclipse中运行它时,有时会遇到运行时异常或SDK异常.
我有这个例外,我正在阅读这个问题的线程,这看起来很混乱:
如何修复android.os.NetworkOnMainThreadException?
我已将此行添加到我的清单中:
<uses-permission android:name="android.permission.INTERNET" />
Run Code Online (Sandbox Code Playgroud)
在讨论中,他们讨论了应用程序无法进行网络连接的主要执行线程.我想知道的是如何重构我的代码,以便它与Android良好实践一致.
这是我的Activity类:
package com.problemio;
import java.io.InputStream;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class LoginActivity extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
// Show form for login_email
final EditText loginEmail = (EditText) findViewById(R.id.login_email);
String name = loginEmail.getText().toString();
// Show field for password
final EditText password …Run Code Online (Sandbox Code Playgroud) 我想AsyncTask在我的应用程序中使用一个,但我无法找到一个代码片段,其中简单解释了工作原理.我只想要一些东西来帮助我快速恢复速度,而不必再次浏览文档或大量的问答.
我似乎有一个经典的任务,但我找不到任何关于如何做的例子.
我想下载一些东西.好吧,我称之为网络服务并得到回复...但它几乎是一样的.
为了做到这一点,我有一个活动,启动一个服务,产生一个完成工作的线程.
现在我想使用我在启动服务的活动中获得的数据.
(我假设开始另一个活动来处理显示结果的工作很简单)
我的问题是服务如何通知某个活动(启动它或另一个活动的活动)?
任何指向示例的指针都非常感谢.
问候
我正在尝试向POST我的API发出请求并且它可以工作Postman(我得到一个有效的JSON对象),但没有使用Volley.使用以下代码:
String URL = "http://somename/token";
RequestQueue queue = Volley.newRequestQueue(StartActivity.this);
queue.add(new JsonObjectRequest(Method.POST, URL, null,
new Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// handle response
Log.i("StartActivity", response.toString());
}
}, new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// handle error
Log.i("StartActivity", error.toString());
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("username", "someUsername");
headers.put("password", "somePassword");
headers.put("Authorization", "Basic someCodeHere");
return headers;
}
@Override
protected Map<String,String> …Run Code Online (Sandbox Code Playgroud) 我正在编写一个验证外部Web服务器上的登录凭据的应用程序 - 所以我有一个基本的问题:创建一个登录屏幕,当提交时会在后台向服务器发送HTTP请求而不会导致UI挂起 - 同时提供对用户的ProgressDialog.
我的问题在于,我想编写一个扩展AsyncTask的通用HTTP Request类,所以当我调用时,.execute()我将传递String参数,这些参数可能包含类似'post'的内容,并且在doInBackground调用时会看到'post'字符串和然后将这些参数转发到我班级的相应电话中.伪代码就像是
public class HTTPOperations extends AsyncTask<String, Void, String>
{
doInBackground(String... string1,additionalParams)
{
if string1.equals "post"
response = httpPost(additionalParams)
return response;
}
httpPost(params)
{
// do http post request
}
}
Run Code Online (Sandbox Code Playgroud)
这是我能想到的,除了为我希望制作的每个HTTP Post/GET等请求创建一个类并扩展ASyncTask ...
这导致我的下一个问题,如果HTTP POST成功并返回一个身份验证令牌,我该如何访问此令牌?
因为新的httpOperations.execute(),不会从doInBackground返回字符串,而是返回值类型
对不起,如果这没有意义,我根本无法解决这个问题.如果需要,请索取详细说明.AsyncTask设计模式和想法受到了极大的欢迎.
我想从Android应用程序中的Web服务器检索数据,并且不知道从哪里开始.我应该使用网络服务吗?