Можно ли создать рабочий процесс Intent для Android? - PullRequest
0 голосов
/ 24 августа 2018

Я работал над приложением для Android, основанным на C # Xamarin (вы могли бы видеть на Java, мне все равно) и основываясь на проделанной ранее работе, мне пришлось создать класс для создания рабочего процесса для приложение, чтобы общий код мог вызывать этот класс для навигации между действиями. Мое текущее решение неверно из-за проблем с производительностью моего приложения. Поскольку мне не разрешено показывать настоящий код, я приведу пример:

class NavigationService : INavigationService
{
    public AppCompatActivity CurrentContext { get; set; }
    public AppCompatActivity PreviousContext { get; set; }
    public ViewFromFramework PreviousView { get; set; }
    public NavigationService (AppCompatActivity context)
    {
        CurrentContext = context;
        PreviousContext = null;
    }
    public void Navigate(ViewFromFramework currentView, ViewFromFramework destinationView)
    {
        PreviousView = currentView;

        switch (destinationView)
        {
            case ViewFromFramework .Splashscreen:
                {
                    this.NavigateTo<SplashScreenActivity>();
                    break;
                }
            case ViewFromFramework .Login:
                {
                    this.NavigateTo<LoginActivity>();
                    break;
                }
            default:
                break;

        }            
    }
    private void NavigateTo<T>()
    {
        PreviousContext = CurrentContext;
        Intent nextActivity = new Intent(this.CurrentContext,typeof(T));
        this.CurrentContext.StartActivity(nextActivity);
        PreviousContext.Finish();
    }
}

Унаследованный класс с именем INavigationService:

public enum ViewFromFramework 
{
    Splashscreen,
    Login
}

public interface INavigationService
{
    void Navigate(ViewFromFramework currentView, ViewFromFramework destinationView);
    ViewFromFramework PreviousView { get; set; }
}

В каждой из моих активностей, которые у меня есть при создании:

NavigationService.CurrentContext = this;

Так как некоторые действия запускают AsyncTasks, когда я заканчиваю действие, я получаю ошибка:

Посмотреть = com.android.internal.policy.impl.PhoneWindow $ DecorView {1306f5f1 G.E ..... R ..... ID 0,0-257,133} не привязан к оконному менеджеру

Есть ли лучший способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...