我需要为Retrofit 2.0.0-beta2库的每个请求添加一个查询参数.我找到了Retrofit 1.9的这个解决方案,但是如何添加RequestInterceptor最新的库版本?
我的界面:
@GET("user/{id}")
Call<User> getUser(@Path("id")long id);
@GET("users/")
Call<List<User>> getUser();
Run Code Online (Sandbox Code Playgroud)
客户:
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(CLIENT) // custom OkHTTP Client
.build();
service = retrofit.create(userService.class);
Run Code Online (Sandbox Code Playgroud) 当用户键入SearchView窗口小部件时,应用程序应进行API调用(在后台线程中)以从服务器获取搜索结果,并在RecyclerView中显示它们(在UI线程中).
我在我的片段中使用以下代码:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.my_fragment, menu);
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
RxSearchView.queryTextChanges(searchView)
.debounce(400, TimeUnit.MILLISECONDS)
.map(CharSequence::toString)
.switchMap(query -> retrofitService.search(query))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<List<Item>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Log.e(LOG_TAG, "Error", e);
}
@Override
public void onNext(List<Item> items) {
// adapter.addItems(...)
}
});
}
Run Code Online (Sandbox Code Playgroud)
但我得到一个例外:
java.lang.IllegalStateException: Must be called from the main thread. Was: Thread[RxIoScheduler-2,5,main]
at …Run Code Online (Sandbox Code Playgroud) 我会找到一个解决这个问题的算法.
输入:n个整数和数字k的数组
我们必须从数组中找到一组数字,所有这些数字在set中的乘积等于k
我想,我必须使用动态编程来完成这项任务.但我不知道如何使用它.
我想知道我需要做什么才能访问数据库线程安全。
这是我的Entity类:
@Entity
@Table(name = "students")
@NamedQuery(name = "Student.getAll", query = "SELECT s FROM Student s")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(length = 32, name = "name")
private String name;
// ... constructor, getters and setters, toString ...
}
Run Code Online (Sandbox Code Playgroud)
这是DbService类:
public class DbService {
public EntityManager em = Persistence
.createEntityManagerFactory("MyPersistenceUnit")
.createEntityManager();
public Student add(Student student) {
EntityTransaction tx = em.getTransaction();
tx.begin();
Student studentFromDb = em.merge(student);
tx.commit();
return studentFromDb;
}
public void delete(long id) { …Run Code Online (Sandbox Code Playgroud)