
本文共 6284 字,大约阅读时间需要 20 分钟。
QMUISchemeHandler ���������������
��������������������������������������������������������������������������������������������������������������������������������������������� QMUISchemeHandler
���������������������������������������������������������������������������������������������
������������
QMUISchemeHandler
������������������������������������������������������������������������������������ URL scheme ��������������������������������������������������������������������������������������������������������������������� URL ���������������������������������������������������
��� keystyle URL scheme ������������������������
schemeName://action?param1=value1¶m2=value2
���������������
qmui://home?tab=2
������������������������������������������������������������������
���������������������
������������������������������������QMUILib ��������������������������������������������� QMUISchemeHandler
���ActivityScheme
��� FragmentScheme
������������������������������������������������������������������������������������
QMUISchemeHandler ������
������������������������QMUISchemeHandler
��������������� Builder ���������������������������������������������������������������
- ������ scheme ������������ scheme ���������������������������������������
- ������������������������������������������������������ scheme ���������
- ���������������������������������������������������
- ��������������������������� fragment ��������� activity ��������� scheme ������������
hello, ������������������������������QMUISchemeHandler
��������������������������������������������������������� Asynchronous Example���
QMUISchemeHandler qmui = QMUISchemeHandler .Builder("qmui://") .blockSameSchemeTimeout(1000) .addInterpolator(new QMUISchemeParamValueDecoder()) .addInterpolator(...) .defaultFragmentFactory(...) .defaultIntentFactory(...) .defaultSchemeMatcher(...) .build();boolean handled = qmui.handle("qmui://xxx");
ActivityScheme ��� FragmentScheme ������
������������������������������������QMUI ��������� ActivityScheme
��� FragmentScheme
��������������������������������������� Fragment ������������������������
ActivityScheme ������
������������������������������������������������������
name()
��������� scheme ���������required()
������������������������������������������������������useRefreshIfCurrentMatched()
������������������������������������������������������������customMatcher()
������������ scheme ���������������customFactory()
������������ activity ������������������keysWith*Value()
������������������������
FragmentScheme ������
��� Fragment ��������������� ActivityScheme ������������������������������������������
activities()
������������������������������������������������������������ activity���forceNewActivity()
������������������������������������ activity���forceNewActivityKey()
��������� scheme ������������������������������������ activity���
���������FragmentScheme ������������������������������������������������������ ActivityScheme ������������������������������
������������
��������������������������������������������������� Activity ��� Fragment ���������������������������QMUI ������������������������������������������������������������ intent
��� arguments
��������������������������� onCreate
���������������������������
@ActivityScheme(name = "activity1")class Activity1 : QMUIActivity { override fun onCreate(savedInstanceState: Bundle?) { if (isStartedByScheme()) { // ��������������� val param1 = getIntent().getStringExtra("paramName") } }}@FragmentScheme(name = "fragment1", activities = { QDMainActivity::class.java })class Fragment1 : QMUIFragment { override fun onCreate(savedInstanceState: Bundle?) { if (isStartedByScheme()) { // ��������������� val param1 = getArguments().getString("paramName") } }}
��������������� Web ������������������������������������ WebViewClient
��� shouldOverrideUrlLoading
��������������� scheme ���������
class MyWebViewClient : WebViewClient { override fun shouldOverrideUrlLoading( view: WebView, url: String ): Boolean { if (schemeHandler.handle(url)) { return true } return super.shouldOverrideUrlLoading(view, url) } override fun shouldOverrideUrlLoading( view: WebView, request: WebResourceRequest ): Boolean { if (schemeHandler.handle(request.getUrl().toString())) { return true } return super.shouldOverrideUrlLoading(view, request) }}
������������
QMUISchemeHandler
��������������������������������� SchemeProcessor
������ SchemeMapImpl
������������ SchemeMap
���������������������������������������������������
SchemeMap ������������
public interface SchemeMap { // ������ schemeAction ��������������� SchemeItem SchemeItem findScheme(QMUISchemeHandler handler, String schemeAction, Mapparams); // ������ schemeAction ������������ boolean exists(QMUISchemeHandler handler, String schemeAction);}
SchemeProcessor ������������
SchemeProcessor
������������������ SchemeMapImpl
��������������������������� scheme ��������������������������� SchemeMap
������������������������������������
- ������������������������������
@ActivityScheme
���@FragmentScheme
��������� - ��������� scheme ���������������������
SchemeItem
��������� - ��������� SchemeItem ���������
mSchemeMap
������
SchemeItem ������
������ SchemeItem
������������������������ scheme ������������������������������
- ��������� Class
- ���������������������
- ������������������������������
- ������������ matcher ���
- ������������������
- ���������������������
���������������������QMUISchemeHandler
���������������������������������������������������������������������������
������
QMUISchemeHandler
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� Activity
��� Fragment
������������������
���������������������������������������������������������������������������������������������������
发表评论
最新留言
关于作者
