小编tas*_*ula的帖子

如何使用dagger 2在Android服务中注入单例

我正在尝试将单身经理添加到Android服务中.问题是注入的管理器与ViewModel中的管理器不同.

匕首组件

@Singleton
@Component(modules = {ApplicationModule.class, AppScreenModule.class, ServiceModule.class})
public interface AppComponent {

    void inject(App application);

    void inject(OpportunisticService opportunisticService);

    @Component.Builder
    interface Builder {
        AppComponent build();

        Builder applicationModule(ApplicationModule applicationModule);
    }
}
Run Code Online (Sandbox Code Playgroud)

模块

@Module
class ApplicationModule {    
    private final App mApp;

    ApplicationModule(App app) {
        mApp = app;
    }

    @Provides
    @Named("ApplicationContext")
    Context provideContext() {
        return mApp.getApplicationContext();
    }

    @Provides
    App provideApplication() {
        return mApp;
    }

    @Provides
    PeersManager providePeersManager() {
        return new PeersManager();
    }
}

@Module
abstract class ServiceModule {

    @ContributesAndroidInjector
    abstract OpportunisticService bindOpportunisticService();
}
Run Code Online (Sandbox Code Playgroud)

初始化 …

android dagger dagger-2

7
推荐指数
1
解决办法
2348
查看次数

从mainThread()切换到io()时出现InterruptedIOException

我有一些代码首先必须运行AndroidSchedulers.mainThread(),然后必须执行HTTP请求,因此必须运行Schedulers.io(),并在UI 上处理结果,所以回到AndroidSchedulers.mainThread().

我收到InterruptedIOException从切换时AndroidSchedulers.mainThread()Scheulers.io().

这是一些代码:

Model model = getModel();

Completable.fromAction(
    new Action0() {
        public void call() {
            mSubject.onNext(model)
        }
    })
    .subscribeOn(AndroidSchedulers.mainThread())
    .observeOn(Schedulers.io())
    .andThen(fetchFromServer())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(/* handle success and error */);
...
public <T> Single<T> fetchFromServer() {
    Request request = new Request(); // some request from server, not important
    return bodyFrom2(request);
}

public <T> Single<T> bodyFrom2(final Request<T> request) {
    return Single.defer(new Callable<Single<T>>() {
                @Override
                public Single<T> call() throws Exception { …
Run Code Online (Sandbox Code Playgroud)

concurrency android rx-java rx-android

5
推荐指数
0
解决办法
326
查看次数

调用没有括号的函数?

我正在研究用于创建Windows 8.1应用程序的"Contose Cookbook"培训.

通过第一个实验室,我看到了类似的东西variable += function;.该函数没有paranthesis,据我所知,你可以创建没有paranthesis的函数,这些属性是属性,但你必须用它们调用它们.

这是我发现的一个类:

namespace ContosoCookbook
{
    sealed partial class App : Application
    {
        public App()
        {
            this.InitializeComponent();
            this.Suspending += OnSuspending;
        }

        private async void OnSuspending(object sender, SuspendingEventArgs e) 
        {
            var deferral = e.SuspendingOperation.GetDeferral();
            await SuspensionManager.SaveAsync();
            deferral.Complete();
        }

        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

什么类型的调用或函数是接受它的.

来自msdn 的Application.Suspending事件.

c# windows-store-apps windows-8.1

2
推荐指数
1
解决办法
2243
查看次数