在ionic3中使用延迟加载的全局导航提供程序是不好的做法吗?

时间:2018-04-18 15:12:29

标签: javascript angular typescript ionic-framework ionic3

我正在使用全局提供程序通过将导航控制器从页面传递到提供程序方法来打开页面。有没有其他方法可以更好地做到这一点?

主要目标不是重复我的自我。我在globalProvider.ts中使用的打开页面方法如下。 currentActive页面存储在提供者的变量中,以防用户登录到应用程序,他将被重定向到最后一个活动页面(currentActive)

globalProvider.ts

package f.l.tcptest;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    TcpClient mTcpClient;
    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        new ConnectTask().execute("");

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    mTcpClient.sendMessage("testing");
            }
        });

    }

    public class ConnectTask extends AsyncTask<String, String, TcpClient> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();

        }

        @Override
        protected TcpClient doInBackground(String... message) {
            //we create a TCPClient object
            // You should use the global one, do not create the local instance if you want to use it on click event
           mTcpClient = new TcpClient(new TcpClient.OnMessageReceived() {
                @Override
                //here the messageReceived method is implemented
                public void messageReceived(String message) {
                    //this method calls the onProgressUpdate
                    publishProgress(message);
                }
            });
            mTcpClient.run();
            return null;
        }

        @Override
        protected void onProgressUpdate(String... values) {
            super.onProgressUpdate(values);
            //response received from server
            Log.d("test", "response " + values[0]);
            //process server response here....
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我不认为这种做法有什么不好。我也做了类似的逻辑,以避免在每个页面中重复显示加载和隐藏加载逻辑。

但是我还要保留一个参数,以帮助我确定页面是应该设置为root还是应该推送到当前堆栈。

这也有助于我从中心位置跟踪分析的页面浏览量。