我想每100毫秒更新一次UI.在StackOverflow中搜索后,我找到了一个使用Runnable和Handler这样的解决方案
final Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
//update UI here
handler.postDelayed(this, 100);
}
};
runnable.run();
Run Code Online (Sandbox Code Playgroud)
有用!但我有一些问题:
Handler是附加MainThread,所以Runnable在MainThread 上运行?
Runnable在MainThread上运行,为什么需要Handler?据我所知,Handler用于在两个线程之间发送消息这是我的UserModel类
public class UserModel {
private String userName;
private String password;
public UserModel(String userName, String password) {
this.userName = userName;
this.password = password;
}
public String getUserName() {
return userName;
}
public String getPassword() {
return password;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我从firebase获取数据的方法
userReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
HashMap<String, UserModel> userModelHashMap = (HashMap<String, UserModel>) dataSnapshot.getValue();
ArrayList<UserModel> userModelList = new ArrayList<>(userModelHashMap.values());
if (userModelList.size() != 0) {
Log.d(TAG, "onDataChange: " + userModelList.get(0));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
} …Run Code Online (Sandbox Code Playgroud) 根据我在互联网上阅读的一些文档,Atomic 类的变量如AtomicInteger, AtomicLong,... 只允许 1 个线程同时访问它们。但是当我尝试使用 进行测试时AtomicBoolean,出了点问题。例如
public class TestAtomicBoolean {
public static void main(String[] args) {
final AtomicBoolean atomicBoolean = new AtomicBoolean(false);
new Thread("T1") {
@Override
public void run() {
while (true) {
System.out.println(Thread.currentThread().getName() + " is waiting for T3 set Atomic to true. Current is " + atomicBoolean.get());
if (atomicBoolean.compareAndSet(true, false)) {
System.out.println("Done. Atomic now is " + atomicBoolean.get());
break;
}
}
}
}.start();
new Thread("T2") {
@Override
public void run() {
while(true) …Run Code Online (Sandbox Code Playgroud) 这是我想要得到的API:http://itunes.apple.com/us/rss/topsongs/limit=20/流派= 29 /明确=真/ JSON
如何以编程方式用另一个数字替换“29”?
我已经阅读了很多文档,但所有文档的形式都与“?”相同。例如:https://api.example.com/tasks ?id=123。我无法将他们的解决方案应用于我的问题。
谢谢你的帮助。
我正在使用Picasso库版本2.71828加载一些图像,但是它不适用于所有URL。这是我的代码:
Picasso.get().load(url).into(imageView);
Run Code Online (Sandbox Code Playgroud)
url1:https : //res.cloudinary.com/lastminute/image/upload/c_scale,w_630/v1431701424/52347407_Casino_Tower_2100x1400_pyzvxz.jpg
url2:http : //images.foody.vn/res/g14/138986/prof/s576x330/foody-mobile-a2-jpg-261-635682356468932282.jpg
url3:https : //static3.mytour.vn/resources/pictures/hotels/19/large_vlj1419841660_khach-san-gia-han.JPG
毕加索仅适用于url1和url2。url3即使我可以在浏览器中打开它,它也不会显示图像。
为什么可以加载url3Picasso?毕加索无法加载哪些类型的网址?