-
Notifications
You must be signed in to change notification settings - Fork 227
/
IRouter.java
133 lines (107 loc) · 2.87 KB
/
IRouter.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
package com.chenenyu.router;
import android.app.ActivityOptions;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.PersistableBundle;
import androidx.annotation.AnimRes;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.core.app.ActivityOptionsCompat;
import androidx.fragment.app.Fragment;
/**
* Router interface.
* <p>
* Created by chenenyu on 2017/3/31.
*/
public interface IRouter {
/**
* Entrance.
*/
IRouter build(Uri uri);
IRouter build(@NonNull RouteRequest request);
/**
* Route request callback.
*/
IRouter callback(RouteCallback callback);
/**
* Call <code>startActivityForResult</code>.
*/
IRouter requestCode(int requestCode);
/**
* @see Bundle#putAll(Bundle)
*/
IRouter with(Bundle bundle);
/**
* @see Bundle#putAll(PersistableBundle)
*/
@RequiresApi(21)
IRouter with(PersistableBundle bundle);
/**
* bundle.putXXX(String key, XXX value).
*/
IRouter with(String key, Object value);
/**
* @see Intent#addFlags(int)
*/
IRouter addFlags(int flags);
/**
* @see Intent#setData(Uri)
*/
IRouter setData(Uri data);
/**
* @see Intent#setType(String)
*/
IRouter setType(String type);
/**
* @see Intent#setDataAndType(Uri, String)
*/
IRouter setDataAndType(Uri data, String type);
/**
* @see Intent#setAction(String)
*/
IRouter setAction(String action);
/**
* @see android.app.Activity#overridePendingTransition(int, int)
*/
IRouter anim(@AnimRes int enterAnim, @AnimRes int exitAnim);
/**
* {@link ActivityOptions#toBundle()} and {@link ActivityOptionsCompat#toBundle()}.
*/
IRouter activityOptionsBundle(Bundle activityOptionsBundle);
/**
* Skip {@link com.chenenyu.router.matcher.AbsImplicitMatcher}.
*/
IRouter skipImplicitMatcher();
/**
* Skip all the interceptors.
*/
IRouter skipInterceptors();
/**
* Skip the named interceptors.
*/
IRouter skipInterceptors(String... interceptors);
/**
* Add interceptors temporarily for current route request.
*/
IRouter addInterceptors(String... interceptors);
/**
* Get an intent instance.
*
* @param source Activity or Fragment instance.
* @return {@link Intent} instance.
*/
Intent getIntent(@NonNull Object source);
/**
* Get a fragment instance.
*
* @param source Activity or Fragment instance.
* @return {@link Fragment} instance.
*/
Fragment getFragment(@NonNull Object source);
void go(Context context, RouteCallback callback);
void go(Context context);
void go(Fragment fragment, RouteCallback callback);
void go(Fragment fragment);
}