Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
flutter_boost_1.22.4
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李增强
flutter_boost_1.22.4
Commits
6afc509d
Commit
6afc509d
authored
5 years ago
by
yangwu.jia
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.9版本升级
parent
d9ac3683
Changes
29
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
885 additions
and
2213 deletions
+885
-2213
android/src/main/java/com/idlefish/flutterboost/BoostEngineProvider.java
...n/java/com/idlefish/flutterboost/BoostEngineProvider.java
+0
-76
android/src/main/java/com/idlefish/flutterboost/BoostFlutterEngine.java
...in/java/com/idlefish/flutterboost/BoostFlutterEngine.java
+0
-392
android/src/main/java/com/idlefish/flutterboost/BoostFlutterView.java
...main/java/com/idlefish/flutterboost/BoostFlutterView.java
+0
-411
android/src/main/java/com/idlefish/flutterboost/BoostPluginRegistry.java
...n/java/com/idlefish/flutterboost/BoostPluginRegistry.java
+3
-3
android/src/main/java/com/idlefish/flutterboost/ContainerRecord.java
.../main/java/com/idlefish/flutterboost/ContainerRecord.java
+0
-1
android/src/main/java/com/idlefish/flutterboost/Debuger.java
android/src/main/java/com/idlefish/flutterboost/Debuger.java
+1
-1
android/src/main/java/com/idlefish/flutterboost/FlutterBoost.java
...src/main/java/com/idlefish/flutterboost/FlutterBoost.java
+0
-283
android/src/main/java/com/idlefish/flutterboost/FlutterBoostPlugin.java
...in/java/com/idlefish/flutterboost/FlutterBoostPlugin.java
+6
-7
android/src/main/java/com/idlefish/flutterboost/NewFlutterBoost.java
.../main/java/com/idlefish/flutterboost/NewFlutterBoost.java
+83
-20
android/src/main/java/com/idlefish/flutterboost/Platform.java
...oid/src/main/java/com/idlefish/flutterboost/Platform.java
+34
-16
android/src/main/java/com/idlefish/flutterboost/SnapshotView.java
...src/main/java/com/idlefish/flutterboost/SnapshotView.java
+0
-97
android/src/main/java/com/idlefish/flutterboost/StateListener.java
...rc/main/java/com/idlefish/flutterboost/StateListener.java
+0
-47
android/src/main/java/com/idlefish/flutterboost/containers/BoostFlutterActivity.java
...dlefish/flutterboost/containers/BoostFlutterActivity.java
+0
-271
android/src/main/java/com/idlefish/flutterboost/containers/BoostFlutterDefaultActivity.java
.../flutterboost/containers/BoostFlutterDefaultActivity.java
+0
-41
android/src/main/java/com/idlefish/flutterboost/containers/BoostFlutterFragment.java
...dlefish/flutterboost/containers/BoostFlutterFragment.java
+0
-159
android/src/main/java/com/idlefish/flutterboost/containers/FlutterActivityAndFragmentDelegate.java
...rboost/containers/FlutterActivityAndFragmentDelegate.java
+42
-68
android/src/main/java/com/idlefish/flutterboost/containers/FlutterFragment.java
...com/idlefish/flutterboost/containers/FlutterFragment.java
+682
-0
android/src/main/java/com/idlefish/flutterboost/containers/FlutterSplashView.java
...m/idlefish/flutterboost/containers/FlutterSplashView.java
+1
-2
android/src/main/java/com/idlefish/flutterboost/containers/NewBoostFlutterActivity.java
...fish/flutterboost/containers/NewBoostFlutterActivity.java
+20
-7
android/src/main/java/com/idlefish/flutterboost/interfaces/IFlutterEngineProvider.java
...efish/flutterboost/interfaces/IFlutterEngineProvider.java
+0
-55
android/src/main/java/com/idlefish/flutterboost/interfaces/IFlutterViewContainer.java
...lefish/flutterboost/interfaces/IFlutterViewContainer.java
+0
-1
android/src/main/java/com/idlefish/flutterboost/interfaces/INativeRouter.java
...a/com/idlefish/flutterboost/interfaces/INativeRouter.java
+0
-1
android/src/main/java/com/idlefish/flutterboost/interfaces/IPlatform.java
.../java/com/idlefish/flutterboost/interfaces/IPlatform.java
+0
-75
android/src/main/java/com/idlefish/flutterboost/interfaces/IStateListener.java
.../com/idlefish/flutterboost/interfaces/IStateListener.java
+0
-18
example/android/app/src/main/java/com/taobao/idlefish/flutterboostexample/FlutterFragment.java
.../taobao/idlefish/flutterboostexample/FlutterFragment.java
+0
-51
example/android/app/src/main/java/com/taobao/idlefish/flutterboostexample/FlutterFragmentPageActivity.java
...fish/flutterboostexample/FlutterFragmentPageActivity.java
+5
-5
example/android/app/src/main/java/com/taobao/idlefish/flutterboostexample/FlutterPageActivity.java
...bao/idlefish/flutterboostexample/FlutterPageActivity.java
+0
-56
example/android/app/src/main/java/com/taobao/idlefish/flutterboostexample/MyApplication.java
...om/taobao/idlefish/flutterboostexample/MyApplication.java
+7
-48
example/android/app/src/main/java/com/taobao/idlefish/flutterboostexample/PageRouter.java
...a/com/taobao/idlefish/flutterboostexample/PageRouter.java
+1
-1
No files found.
android/src/main/java/com/idlefish/flutterboost/BoostEngineProvider.java
deleted
100755 → 0
View file @
d9ac3683
/*
* The MIT License (MIT)
*
* Copyright (c) 2019 Alibaba Group
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package
com.idlefish.flutterboost
;
import
android.content.Context
;
import
com.idlefish.flutterboost.interfaces.IFlutterEngineProvider
;
import
com.idlefish.flutterboost.interfaces.IStateListener
;
import
io.flutter.embedding.engine.FlutterEngine
;
import
io.flutter.embedding.engine.FlutterShellArgs
;
import
io.flutter.view.FlutterMain
;
public
class
BoostEngineProvider
implements
IFlutterEngineProvider
{
private
FlutterEngine
mEngine
=
null
;
public
BoostEngineProvider
()
{}
@Override
public
BoostFlutterEngine
createEngine
(
Context
context
)
{
return
new
BoostFlutterEngine
(
context
.
getApplicationContext
());
}
@Override
public
FlutterEngine
provideEngine
(
Context
context
)
{
Utils
.
assertCallOnMainThread
();
if
(
mEngine
==
null
)
{
FlutterShellArgs
flutterShellArgs
=
new
FlutterShellArgs
(
new
String
[
0
]);
FlutterMain
.
ensureInitializationComplete
(
context
.
getApplicationContext
(),
flutterShellArgs
.
toArray
());
mEngine
=
new
FlutterEngine
(
context
.
getApplicationContext
());
// final IStateListener stateListener = FlutterBoost.sInstance.mStateListener;
// if(stateListener != null) {
// stateListener.onEngineCreated(mEngine);
// }
}
return
mEngine
;
}
@Override
public
FlutterEngine
tryGetEngine
()
{
return
mEngine
;
}
public
static
void
assertEngineRunning
(){
final
FlutterEngine
engine
=
NewFlutterBoost
.
instance
().
engineProvider
().
tryGetEngine
();
// if(engine == null || !engine.isRunning()) {
// throw new RuntimeException("engine is not running yet!");
// }
}
}
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/BoostFlutterEngine.java
deleted
100644 → 0
View file @
d9ac3683
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/BoostFlutterView.java
deleted
100644 → 0
View file @
d9ac3683
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/BoostPluginRegistry.java
View file @
6afc509d
...
...
@@ -46,13 +46,13 @@ public class BoostPluginRegistry extends FlutterPluginRegistry {
Activity
activity
;
IContainerRecord
record
;
record
=
FlutterBoost
.
singleton
().
containerManager
().
getCurrentTopRecord
();
record
=
NewFlutterBoost
.
instance
().
containerManager
().
getCurrentTopRecord
();
if
(
record
==
null
)
{
record
=
FlutterBoost
.
singleton
().
containerManager
().
getLastGenerateRecord
();
record
=
NewFlutterBoost
.
instance
().
containerManager
().
getLastGenerateRecord
();
}
if
(
record
==
null
)
{
activity
=
FlutterBoost
.
singleton
().
currentActivity
();
activity
=
NewFlutterBoost
.
instance
().
currentActivity
();
}
else
{
activity
=
record
.
getContainer
().
getContextActivity
();
}
...
...
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/ContainerRecord.java
View file @
6afc509d
...
...
@@ -69,7 +69,6 @@ public class ContainerRecord implements IContainerRecord {
@Override
public
void
onCreate
()
{
Utils
.
assertCallOnMainThread
();
BoostEngineProvider
.
assertEngineRunning
();
if
(
mState
!=
STATE_UNKNOW
)
{
Debuger
.
exception
(
"state error"
);
...
...
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/Debuger.java
View file @
6afc509d
...
...
@@ -60,7 +60,7 @@ public class Debuger {
public
static
boolean
isDebug
(){
try
{
return
FlutterBoost
.
singleton
().
platform
().
isDebug
();
return
NewFlutterBoost
.
instance
().
platform
().
isDebug
();
}
catch
(
Throwable
t
){
return
false
;
}
...
...
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/FlutterBoost.java
deleted
100755 → 0
View file @
d9ac3683
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/FlutterBoostPlugin.java
View file @
6afc509d
...
...
@@ -3,7 +3,6 @@ package com.idlefish.flutterboost;
import
android.support.annotation.Nullable
;
import
com.idlefish.flutterboost.interfaces.IContainerRecord
;
import
com.idlefish.flutterboost.interfaces.IStateListener
;
import
java.io.Serializable
;
import
java.util.HashMap
;
...
...
@@ -50,12 +49,12 @@ public class FlutterBoostPlugin {
a
.
onChannelRegistered
(
sInstance
);
}
if
(
FlutterBoost
.
sInstance
!=
null
)
{
final
IStateListener
stateListener
=
FlutterBoost
.
sInstance
.
mStateListener
;
if
(
stateListener
!=
null
)
{
stateListener
.
onChannelRegistered
(
registrar
,
sInstance
);
}
}
// if (NewFlutterBoost.instance()
!= null) {
// final IStateListener stateListener = NewFlutterBoost.instance()
.mStateListener;
//
if (stateListener != null) {
//
stateListener.onChannelRegistered(registrar, sInstance);
//
}
//
}
sActions
.
clear
();
}
...
...
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/NewFlutterBoost.java
View file @
6afc509d
...
...
@@ -7,8 +7,11 @@ import android.content.Context;
import
android.os.Bundle
;
import
android.support.annotation.NonNull
;
import
com.idlefish.flutterboost.interfaces.*
;
import
io.flutter.app.FlutterPluginRegistry
;
import
io.flutter.Log
;
import
io.flutter.embedding.android.FlutterView
;
import
io.flutter.embedding.engine.FlutterEngine
;
import
io.flutter.embedding.engine.dart.DartExecutor
;
import
io.flutter.view.FlutterMain
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
@@ -16,8 +19,9 @@ import java.util.Map;
public
class
NewFlutterBoost
{
private
Platform
mPlatform
;
private
FlutterViewContainerManager
mManager
;
private
IFlutterEngineProvider
mEngineProvider
;
private
Activity
mCurrentActiveActivity
;
static
NewFlutterBoost
sInstance
=
null
;
...
...
@@ -35,15 +39,22 @@ public class NewFlutterBoost {
mPlatform
=
platform
;
mManager
=
new
FlutterViewContainerManager
();
mEngineProvider
=
platform
.
engineProvider
();
if
(
mPlatform
.
whenEngineStart
()
==
ConfigBuilder
.
IMMEDIATELY
)
{
doInitialFlutterViewRun
(
mPlatform
);
}
platform
.
getApplication
().
registerActivityLifecycleCallbacks
(
new
Application
.
ActivityLifecycleCallbacks
()
{
@Override
public
void
onActivityCreated
(
Activity
activity
,
Bundle
savedInstanceState
)
{
if
(
mPlatform
.
whenEngineStart
()
==
IPlatform
.
ANY_ACTIVITY_CREATED
)
{
Log
.
e
(
"bbbb1"
,
"xxxxx"
);
if
(
mPlatform
.
whenEngineStart
()
==
ConfigBuilder
.
ANY_ACTIVITY_CREATED
)
{
Log
.
e
(
"bbbb2"
,
"xxxxx"
);
doInitialFlutterViewRun
(
mPlatform
);
}
}
...
...
@@ -52,7 +63,7 @@ public class NewFlutterBoost {
if
(
mCurrentActiveActivity
==
null
)
{
Debuger
.
log
(
"Application entry foreground"
);
if
(
NewFlutterBoost
.
instance
().
engineProvider
()
.
tryGetEngine
()
!=
null
)
{
if
(
NewFlutterBoost
.
instance
().
engineProvider
()
!=
null
)
{
HashMap
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"type"
,
"foreground"
);
channel
().
sendEvent
(
"lifecycle"
,
map
);
...
...
@@ -76,7 +87,7 @@ public class NewFlutterBoost {
if
(
mCurrentActiveActivity
==
activity
)
{
Debuger
.
log
(
"Application entry background"
);
if
(
m
EngineProvider
.
tryGetEngine
()
!=
null
)
{
if
(
m
Platform
.
engineProvider
()
!=
null
)
{
HashMap
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"type"
,
"background"
);
channel
().
sendEvent
(
"lifecycle"
,
map
);
...
...
@@ -95,7 +106,7 @@ public class NewFlutterBoost {
if
(
mCurrentActiveActivity
==
activity
)
{
Debuger
.
log
(
"Application entry background"
);
if
(
m
EngineProvider
.
tryGetEngine
()
!=
null
)
{
if
(
m
Platform
.
engineProvider
()
!=
null
)
{
HashMap
<
String
,
String
>
map
=
new
HashMap
<>();
map
.
put
(
"type"
,
"background"
);
channel
().
sendEvent
(
"lifecycle"
,
map
);
...
...
@@ -106,21 +117,60 @@ public class NewFlutterBoost {
});
BoostPluginRegistry
registry
=
new
BoostPluginRegistry
(
this
.
engineProvider
().
provideEngine
(
mPlatform
.
getApplication
()
),
BoostPluginRegistry
registry
=
new
BoostPluginRegistry
(
this
.
engineProvider
(
),
mPlatform
.
getApplication
());
mPlatform
.
registerPlugins
(
registry
);
}
private
void
doInitialFlutterViewRun
(
Platform
platform
)
{
// Don't attempt to start a FlutterEngine if we're using a cached FlutterEngine.
// if (host.getCachedEngineId() != null) {
// return;
// }
FlutterEngine
flutterEngine
=
platform
.
engineProvider
();
if
(
flutterEngine
.
getDartExecutor
().
isExecutingDart
())
{
// No warning is logged because this situation will happen on every config
// change if the developer does not choose to retain the Fragment instance.
// So this is expected behavior in many cases.
return
;
}
Log
.
e
(
"bbbb3"
,
"xxxxx"
);
// The engine needs to receive the Flutter app's initial route before executing any
// Dart code to ensure that the initial route arrives in time to be applied.
if
(
platform
.
initialRoute
()
!=
null
)
{
flutterEngine
.
getNavigationChannel
().
setInitialRoute
(
platform
.
initialRoute
());
}
// Configure the Dart entrypoint and execute it.
DartExecutor
.
DartEntrypoint
entrypoint
=
new
DartExecutor
.
DartEntrypoint
(
FlutterMain
.
findAppBundlePath
(),
"main"
);
flutterEngine
.
getDartExecutor
().
executeDartEntrypoint
(
entrypoint
);
}
public
static
class
ConfigBuilder
{
protected
static
final
String
DEFAULT_DART_ENTRYPOINT
=
"main"
;
protected
static
final
String
DEFAULT_INITIAL_ROUTE
=
"/"
;
public
static
final
String
DEFAULT_DART_ENTRYPOINT
=
"main"
;
public
static
final
String
DEFAULT_INITIAL_ROUTE
=
"/"
;
public
static
int
IMMEDIATELY
=
0
;
//立即启动引擎
public
static
int
ANY_ACTIVITY_CREATED
=
1
;
//当有任何Activity创建时,启动引擎
private
String
dartEntrypoint
=
DEFAULT_DART_ENTRYPOINT
;
private
String
initialRoute
=
DEFAULT_INITIAL_ROUTE
;
private
int
whenEngineStart
=
ANY_ACTIVITY_CREATED
;
private
boolean
isDebug
=
false
;
private
int
whenEngineStart
=
1
;
private
FlutterView
.
RenderMode
renderMode
=
FlutterView
.
RenderMode
.
surface
;
private
Application
mApp
;
private
INativeRouter
router
=
null
;
...
...
@@ -130,11 +180,21 @@ public class NewFlutterBoost {
this
.
mApp
=
app
;
}
public
ConfigBuilder
renderMode
(
FlutterView
.
RenderMode
renderMode
)
{
this
.
renderMode
=
renderMode
;
return
this
;
}
public
ConfigBuilder
dartEntrypoint
(
@NonNull
String
dartEntrypoint
)
{
this
.
dartEntrypoint
=
dartEntrypoint
;
return
this
;
}
public
ConfigBuilder
initialRoute
(
@NonNull
String
initialRoute
)
{
this
.
initialRoute
=
initialRoute
;
return
this
;
}
public
ConfigBuilder
isDebug
(
boolean
isDebug
)
{
this
.
isDebug
=
isDebug
;
return
this
;
...
...
@@ -148,7 +208,7 @@ public class NewFlutterBoost {
public
Platform
build
()
{
Platform
platform
=
new
Platform
()
{
@Override
public
Application
getApplication
()
{
return
ConfigBuilder
.
this
.
mApp
;
}
...
...
@@ -159,19 +219,22 @@ public class NewFlutterBoost {
}
@Override
public
String
initialRoute
()
{
return
ConfigBuilder
.
this
.
initialRoute
;
}
public
void
openContainer
(
Context
context
,
String
url
,
Map
<
String
,
Object
>
urlParams
,
int
requestCode
,
Map
<
String
,
Object
>
exts
)
{
router
.
openContainer
(
context
,
url
,
urlParams
,
requestCode
,
exts
);
}
@Override
public
IFlutterEngineProvider
engineProvider
()
{
return
new
BoostEngineProvider
();
}
public
int
whenEngineStart
()
{
return
ConfigBuilder
.
this
.
whenEngineStart
;
}
public
FlutterView
.
RenderMode
renderMode
()
{
return
ConfigBuilder
.
this
.
renderMode
;
}
};
return
platform
;
...
...
@@ -181,15 +244,15 @@ public class NewFlutterBoost {
}
public
IFlutterEngineProvider
engineProvider
()
{
return
sInstance
.
m
EngineProvider
;
public
FlutterEngine
engineProvider
()
{
return
sInstance
.
m
Platform
.
engineProvider
()
;
}
public
IContainerManager
containerManager
()
{
return
sInstance
.
mManager
;
}
public
I
Platform
platform
()
{
public
Platform
platform
()
{
return
sInstance
.
mPlatform
;
}
...
...
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/Platform.java
View file @
6afc509d
package
com.idlefish.flutterboost
;
import
android.app.Application
;
import
android.content.Context
;
import
com.idlefish.flutterboost.interfaces.IContainerRecord
;
import
com.idlefish.flutterboost.interfaces.IFlutterEngineProvider
;
import
com.idlefish.flutterboost.interfaces.IPlatform
;
import
java.lang.reflect.Method
;
import
java.util.Map
;
import
io.flutter.embedding.android.FlutterView
;
import
io.flutter.embedding.engine.FlutterEngine
;
import
io.flutter.embedding.engine.FlutterShellArgs
;
import
io.flutter.plugin.common.PluginRegistry
;
import
io.flutter.view.FlutterMain
;
public
abstract
class
Platform
implements
IPlatform
{
public
abstract
class
Platform
{
public
FlutterEngine
mEngine
;
public
abstract
Application
getApplication
();
public
abstract
void
openContainer
(
Context
context
,
String
url
,
Map
<
String
,
Object
>
urlParams
,
int
requestCode
,
Map
<
String
,
Object
>
exts
);
public
abstract
int
whenEngineStart
()
;
public
abstract
FlutterView
.
RenderMode
renderMode
();
public
abstract
boolean
isDebug
()
;
public
abstract
String
initialRoute
();
@Override
public
boolean
isDebug
()
{
return
false
;
}
@Override
public
void
closeContainer
(
IContainerRecord
record
,
Map
<
String
,
Object
>
result
,
Map
<
String
,
Object
>
exts
)
{
if
(
record
==
null
)
return
;
record
.
getContainer
().
finishContainer
(
result
);
}
@Override
public
IFlutterEngineProvider
engineProvider
()
{
return
new
BoostEngineProvider
();
public
FlutterEngine
engineProvider
()
{
if
(
mEngine
==
null
)
{
FlutterShellArgs
flutterShellArgs
=
new
FlutterShellArgs
(
new
String
[
0
]);
FlutterMain
.
ensureInitializationComplete
(
getApplication
().
getApplicationContext
(),
flutterShellArgs
.
toArray
());
mEngine
=
new
FlutterEngine
(
getApplication
().
getApplicationContext
());
}
return
mEngine
;
}
@Override
public
void
registerPlugins
(
PluginRegistry
registry
)
{
try
{
Class
clz
=
Class
.
forName
(
"io.flutter.plugins.GeneratedPluginRegistrant"
);
...
...
@@ -39,8 +60,5 @@ public abstract class Platform implements IPlatform {
}
}
@Override
public
int
whenEngineStart
()
{
return
ANY_ACTIVITY_CREATED
;
}
}
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/SnapshotView.java
deleted
100644 → 0
View file @
d9ac3683
package
com.idlefish.flutterboost
;
import
android.content.Context
;
import
android.graphics.Bitmap
;
import
android.graphics.Color
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.util.AttributeSet
;
import
android.view.Gravity
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.FrameLayout
;
import
android.widget.ImageView
;
import
java.util.LinkedList
;
import
java.util.List
;
public
class
SnapshotView
extends
FrameLayout
{
private
ImageView
mImg
;
public
SnapshotView
(
@NonNull
Context
context
)
{
super
(
context
);
init
();
}
public
SnapshotView
(
@NonNull
Context
context
,
@Nullable
AttributeSet
attrs
)
{
super
(
context
,
attrs
);
init
();
}
public
SnapshotView
(
@NonNull
Context
context
,
@Nullable
AttributeSet
attrs
,
int
defStyleAttr
)
{
super
(
context
,
attrs
,
defStyleAttr
);
init
();
}
private
void
init
(){
setBackgroundColor
(
Color
.
RED
);
mImg
=
new
ImageView
(
getContext
());
FrameLayout
.
LayoutParams
params
=
new
FrameLayout
.
LayoutParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
MATCH_PARENT
);
params
.
gravity
=
Gravity
.
CENTER
;
mImg
.
setScaleType
(
ImageView
.
ScaleType
.
FIT_XY
);
mImg
.
setLayoutParams
(
params
);
addView
(
mImg
);
}
public
void
toggleSnapshot
(
BoostFlutterView
flutterView
){
if
(!
dismissSnapshot
(
flutterView
))
{
showSnapshot
(
flutterView
);
}
}
public
boolean
showSnapshot
(
BoostFlutterView
flutterView
){
if
(
flutterView
==
null
)
return
false
;
dismissSnapshot
(
flutterView
);
final
Bitmap
bitmap
=
flutterView
.
getEngine
().
getRenderer
().
getBitmap
();
if
(
bitmap
==
null
||
bitmap
.
isRecycled
())
{
return
false
;
}
mImg
.
setImageBitmap
(
bitmap
);
flutterView
.
addView
(
this
,
new
FrameLayout
.
LayoutParams
(
ViewGroup
.
LayoutParams
.
MATCH_PARENT
,
ViewGroup
.
LayoutParams
.
MATCH_PARENT
));
Debuger
.
log
(
"showSnapshot"
);
return
true
;
}
public
boolean
dismissSnapshot
(
BoostFlutterView
flutterView
){
List
<
View
>
snapshots
=
new
LinkedList
<>();
for
(
int
index
=
0
;
index
<
flutterView
.
getChildCount
();
index
++){
View
view
=
flutterView
.
getChildAt
(
index
);
if
(
view
instanceof
SnapshotView
)
{
snapshots
.
add
(
view
);
}
}
if
(
snapshots
.
isEmpty
())
{
return
false
;
}
else
{
for
(
View
v:
snapshots
)
{
flutterView
.
removeView
(
v
);
}
Debuger
.
log
(
"dismissSnapshot"
);
return
true
;
}
}
}
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/StateListener.java
deleted
100644 → 0
View file @
d9ac3683
package
com.idlefish.flutterboost
;
import
com.idlefish.flutterboost.interfaces.IStateListener
;
import
io.flutter.plugin.common.PluginRegistry
;
public
class
StateListener
implements
IStateListener
{
@Override
public
void
onEngineCreated
(
BoostFlutterEngine
engine
)
{
Debuger
.
log
(
">>onEngineCreated"
);
}
@Override
public
void
onEngineStarted
(
BoostFlutterEngine
engine
)
{
Debuger
.
log
(
">>onEngineStarted"
);
}
@Override
public
void
onChannelRegistered
(
PluginRegistry
.
Registrar
registrar
,
FlutterBoostPlugin
channel
)
{
Debuger
.
log
(
">>onFlutterViewInited"
);
}
@Override
public
void
onFlutterViewInited
(
BoostFlutterEngine
engine
,
BoostFlutterView
flutterView
)
{
Debuger
.
log
(
">>onFlutterViewInited"
);
}
@Override
public
void
beforeEngineAttach
(
BoostFlutterEngine
engine
,
BoostFlutterView
flutterView
)
{
Debuger
.
log
(
">>beforeEngineAttach"
);
}
@Override
public
void
afterEngineAttached
(
BoostFlutterEngine
engine
,
BoostFlutterView
flutterView
)
{
Debuger
.
log
(
">>afterEngineAttached"
);
}
@Override
public
void
beforeEngineDetach
(
BoostFlutterEngine
engine
,
BoostFlutterView
flutterView
)
{
Debuger
.
log
(
">>beforeEngineDetach"
);
}
@Override
public
void
afterEngineDetached
(
BoostFlutterEngine
engine
,
BoostFlutterView
flutterView
)
{
Debuger
.
log
(
">>afterEngineDetached"
);
}
}
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/containers/BoostFlutterActivity.java
deleted
100644 → 0
View file @
d9ac3683
/*
* The MIT License (MIT)
*
* Copyright (c) 2019 Alibaba Group
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package
com.idlefish.flutterboost.containers
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.graphics.Color
;
import
android.graphics.drawable.ColorDrawable
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.os.Handler
;
import
android.os.Looper
;
import
android.view.Gravity
;
import
android.view.KeyEvent
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.Window
;
import
android.view.WindowManager
;
import
android.widget.FrameLayout
;
import
android.widget.LinearLayout
;
import
android.widget.ProgressBar
;
import
android.widget.TextView
;
import
com.idlefish.flutterboost.BoostFlutterEngine
;
import
com.idlefish.flutterboost.BoostFlutterView
;
import
com.idlefish.flutterboost.FlutterBoost
;
import
com.idlefish.flutterboost.Utils
;
import
com.idlefish.flutterboost.interfaces.IFlutterViewContainer
;
import
com.idlefish.flutterboost.interfaces.IOperateSyncer
;
import
java.io.Serializable
;
import
java.util.HashMap
;
import
java.util.Map
;
import
io.flutter.embedding.android.FlutterView
;
import
io.flutter.plugin.platform.PlatformPlugin
;
public
abstract
class
BoostFlutterActivity
extends
Activity
implements
IFlutterViewContainer
{
protected
BoostFlutterEngine
mFlutterEngine
;
protected
BoostFlutterView
mFlutterView
;
protected
IOperateSyncer
mSyncer
;
private
Handler
mHandler
=
new
Handler
(
Looper
.
getMainLooper
());
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
configureWindowForTransparency
();
mSyncer
=
FlutterBoost
.
singleton
().
containerManager
().
generateSyncer
(
this
);
mFlutterEngine
=
createFlutterEngine
();
mFlutterView
=
createFlutterView
(
mFlutterEngine
);
setContentView
(
mFlutterView
);
mSyncer
.
onCreate
();
configureStatusBarForFullscreenFlutterExperience
();
}
@Override
public
void
onAttachedToWindow
()
{
super
.
onAttachedToWindow
();
mHandler
.
post
(
new
Runnable
()
{
@Override
public
void
run
()
{
configureStatusBarForFullscreenFlutterExperience
();
}
});
}
protected
void
configureWindowForTransparency
()
{
if
(
isBackgroundTransparent
())
{
getWindow
().
setBackgroundDrawable
(
new
ColorDrawable
(
Color
.
TRANSPARENT
));
getWindow
().
setFlags
(
WindowManager
.
LayoutParams
.
FLAG_LAYOUT_NO_LIMITS
,
WindowManager
.
LayoutParams
.
FLAG_LAYOUT_NO_LIMITS
);
}
}
protected
void
configureStatusBarForFullscreenFlutterExperience
()
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
LOLLIPOP
)
{
Window
window
=
getWindow
();
window
.
addFlags
(
WindowManager
.
LayoutParams
.
FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
);
window
.
setStatusBarColor
(
Color
.
TRANSPARENT
);
window
.
getDecorView
().
setSystemUiVisibility
(
PlatformPlugin
.
DEFAULT_SYSTEM_UI
);
}
Utils
.
setStatusBarLightMode
(
this
,
true
);
}
protected
BoostFlutterEngine
createFlutterEngine
(){
// return FlutterBoost.singleton().engineProvider().provideEngine(this);
return
null
;
}
protected
BoostFlutterView
createFlutterView
(
BoostFlutterEngine
engine
){
BoostFlutterView
.
Builder
builder
=
new
BoostFlutterView
.
Builder
(
this
);
return
builder
.
flutterEngine
(
engine
)
.
renderMode
(
FlutterView
.
RenderMode
.
texture
)
.
transparencyMode
(
isBackgroundTransparent
()
?
FlutterView
.
TransparencyMode
.
transparent
:
FlutterView
.
TransparencyMode
.
opaque
)
.
renderingProgressCoverCreator
(
new
BoostFlutterView
.
RenderingProgressCoverCreator
()
{
@Override
public
View
createRenderingProgressCover
(
Context
context
)
{
return
BoostFlutterActivity
.
this
.
createRenderingProgressCover
();
}
})
.
build
();
}
protected
boolean
isBackgroundTransparent
(){
return
false
;
}
protected
View
createRenderingProgressCover
(){
FrameLayout
frameLayout
=
new
FrameLayout
(
this
);
LinearLayout
linearLayout
=
new
LinearLayout
(
this
);
linearLayout
.
setOrientation
(
LinearLayout
.
VERTICAL
);
FrameLayout
.
LayoutParams
layoutParams
=
new
FrameLayout
.
LayoutParams
(
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
);
layoutParams
.
gravity
=
Gravity
.
CENTER
;
frameLayout
.
addView
(
linearLayout
,
layoutParams
);
ProgressBar
progressBar
=
new
ProgressBar
(
this
);
LinearLayout
.
LayoutParams
params
=
new
LinearLayout
.
LayoutParams
(
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
);
params
.
gravity
=
Gravity
.
CENTER_HORIZONTAL
;
linearLayout
.
addView
(
progressBar
,
params
);
TextView
textView
=
new
TextView
(
this
);
params
=
new
LinearLayout
.
LayoutParams
(
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
,
ViewGroup
.
LayoutParams
.
WRAP_CONTENT
);
params
.
gravity
=
Gravity
.
CENTER_HORIZONTAL
;
textView
.
setText
(
"Frame Rendering..."
);
linearLayout
.
addView
(
textView
,
params
);
return
frameLayout
;
}
@Override
protected
void
onResume
()
{
super
.
onResume
();
mSyncer
.
onAppear
();
mFlutterEngine
.
getLifecycleChannel
().
appIsResumed
();
}
@Override
protected
void
onPause
()
{
mSyncer
.
onDisappear
();
super
.
onPause
();
mFlutterEngine
.
getLifecycleChannel
().
appIsInactive
();
}
@Override
protected
void
onDestroy
()
{
Utils
.
fixInputMethodManagerLeak
(
this
);
mSyncer
.
onDestroy
();
super
.
onDestroy
();
}
@Override
public
void
onBackPressed
()
{
mSyncer
.
onBackPressed
();
}
@Override
protected
void
onNewIntent
(
Intent
intent
)
{
super
.
onNewIntent
(
intent
);
mSyncer
.
onNewIntent
(
intent
);
}
@Override
protected
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
Intent
data
)
{
super
.
onActivityResult
(
requestCode
,
resultCode
,
data
);
mSyncer
.
onActivityResult
(
requestCode
,
resultCode
,
data
);
Map
<
String
,
Object
>
result
=
null
;
if
(
data
!=
null
)
{
Serializable
rlt
=
data
.
getSerializableExtra
(
RESULT_KEY
);
if
(
rlt
instanceof
Map
)
{
result
=
(
Map
<
String
,
Object
>)
rlt
;
}
}
mSyncer
.
onContainerResult
(
requestCode
,
resultCode
,
result
);
}
@Override
public
void
onRequestPermissionsResult
(
int
requestCode
,
String
[]
permissions
,
int
[]
grantResults
)
{
super
.
onRequestPermissionsResult
(
requestCode
,
permissions
,
grantResults
);
mSyncer
.
onRequestPermissionsResult
(
requestCode
,
permissions
,
grantResults
);
}
@Override
public
void
onTrimMemory
(
int
level
)
{
super
.
onTrimMemory
(
level
);
mSyncer
.
onTrimMemory
(
level
);
}
@Override
public
void
onLowMemory
()
{
super
.
onLowMemory
();
mSyncer
.
onLowMemory
();
}
@Override
protected
void
onUserLeaveHint
()
{
super
.
onUserLeaveHint
();
mSyncer
.
onUserLeaveHint
();
}
@Override
public
Activity
getContextActivity
()
{
return
this
;
}
// @Override
// public BoostFlutterView getBoostFlutterView() {
// return mFlutterView;
// }
@Override
public
void
finishContainer
(
Map
<
String
,
Object
>
result
)
{
if
(
result
!=
null
)
{
FlutterBoost
.
setBoostResult
(
this
,
new
HashMap
<>(
result
));
finish
();
}
else
{
finish
();
}
}
@Override
public
void
onContainerShown
()
{}
@Override
public
void
onContainerHidden
()
{}
}
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/containers/BoostFlutterDefaultActivity.java
deleted
100644 → 0
View file @
d9ac3683
package
com.idlefish.flutterboost.containers
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.content.Intent
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
BoostFlutterDefaultActivity
extends
BoostFlutterActivity
{
@Override
public
FlutterSplashView
getBoostFlutterView
()
{
return
null
;
}
@Override
public
String
getContainerUrl
()
{
return
getIntent
().
getStringExtra
(
"url"
);
}
@Override
public
Map
getContainerUrlParams
()
{
return
(
Map
)(
getIntent
().
getSerializableExtra
(
"params"
));
}
private
static
Intent
intent
(
Context
context
,
String
url
,
HashMap
<
String
,
Object
>
params
)
{
final
Intent
intent
=
new
Intent
(
context
,
BoostFlutterDefaultActivity
.
class
);
intent
.
putExtra
(
"url"
,
url
);
intent
.
putExtra
(
"params"
,
params
);
return
intent
;
}
public
static
void
open
(
Context
context
,
String
url
,
HashMap
<
String
,
Object
>
params
)
{
context
.
startActivity
(
intent
(
context
,
url
,
params
));
}
public
static
void
open
(
Activity
activity
,
String
url
,
HashMap
<
String
,
Object
>
params
,
int
requestCode
)
{
activity
.
startActivityForResult
(
intent
(
activity
,
url
,
params
),
requestCode
);
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/containers/BoostFlutterFragment.java
deleted
100755 → 0
View file @
d9ac3683
/*
* The MIT License (MIT)
*
* Copyright (c) 2019 Alibaba Group
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package
com.idlefish.flutterboost.containers
;
import
android.app.Activity
;
import
android.content.Intent
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.support.annotation.Nullable
;
import
android.support.v4.app.Fragment
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.Window
;
import
android.view.WindowManager
;
import
com.idlefish.flutterboost.BoostFlutterEngine
;
import
com.idlefish.flutterboost.BoostFlutterView
;
import
com.idlefish.flutterboost.FlutterBoost
;
import
com.idlefish.flutterboost.Utils
;
import
com.idlefish.flutterboost.interfaces.IFlutterViewContainer
;
import
com.idlefish.flutterboost.interfaces.IOperateSyncer
;
import
java.util.Map
;
import
io.flutter.embedding.android.FlutterView
;
import
io.flutter.plugin.platform.PlatformPlugin
;
abstract
public
class
BoostFlutterFragment
extends
Fragment
implements
IFlutterViewContainer
{
protected
BoostFlutterEngine
mFlutterEngine
;
protected
BoostFlutterView
mFlutterView
;
protected
IOperateSyncer
mSyncer
;
@Nullable
@Override
public
View
onCreateView
(
LayoutInflater
inflater
,
@Nullable
ViewGroup
container
,
@Nullable
Bundle
savedInstanceState
)
{
mSyncer
=
FlutterBoost
.
singleton
().
containerManager
().
generateSyncer
(
this
);
mFlutterEngine
=
createFlutterEngine
();
mFlutterView
=
createFlutterView
(
mFlutterEngine
);
mSyncer
.
onCreate
();
return
mFlutterView
;
}
protected
BoostFlutterEngine
createFlutterEngine
(){
// return FlutterBoost.singleton().engineProvider().provideEngine(getContext());
return
null
;
}
protected
BoostFlutterView
createFlutterView
(
BoostFlutterEngine
engine
){
BoostFlutterView
.
Builder
builder
=
new
BoostFlutterView
.
Builder
(
getContextActivity
());
return
builder
.
flutterEngine
(
engine
)
.
renderMode
(
FlutterView
.
RenderMode
.
texture
)
.
transparencyMode
(
FlutterView
.
TransparencyMode
.
opaque
)
.
build
();
}
@Override
public
void
onResume
()
{
super
.
onResume
();
mSyncer
.
onAppear
();
mFlutterEngine
.
getLifecycleChannel
().
appIsResumed
();
}
@Override
public
void
onPause
()
{
mSyncer
.
onDisappear
();
super
.
onPause
();
mFlutterEngine
.
getLifecycleChannel
().
appIsInactive
();
}
@Override
public
void
onDestroy
()
{
mSyncer
.
onDestroy
();
super
.
onDestroy
();
}
public
void
onBackPressed
()
{
mSyncer
.
onBackPressed
();
}
public
void
onNewIntent
(
Intent
intent
)
{
mSyncer
.
onNewIntent
(
intent
);
}
@Override
public
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
Intent
data
)
{
super
.
onActivityResult
(
requestCode
,
resultCode
,
data
);
mSyncer
.
onActivityResult
(
requestCode
,
resultCode
,
data
);
}
@Override
public
void
onRequestPermissionsResult
(
int
requestCode
,
String
[]
permissions
,
int
[]
grantResults
)
{
super
.
onRequestPermissionsResult
(
requestCode
,
permissions
,
grantResults
);
mSyncer
.
onRequestPermissionsResult
(
requestCode
,
permissions
,
grantResults
);
}
public
void
onTrimMemory
(
int
level
)
{
mSyncer
.
onTrimMemory
(
level
);
}
@Override
public
void
onLowMemory
()
{
super
.
onLowMemory
();
mSyncer
.
onLowMemory
();
}
public
void
onUserLeaveHint
()
{
mSyncer
.
onUserLeaveHint
();
}
@Override
public
Activity
getContextActivity
()
{
return
getActivity
();
}
// @Override
// public BoostFlutterView getBoostFlutterView() {
// return mFlutterView;
// }
@Override
public
void
finishContainer
(
Map
<
String
,
Object
>
result
)
{
getFragmentManager
().
popBackStack
();
}
@Override
public
void
onContainerShown
()
{}
@Override
public
void
onContainerHidden
()
{}
}
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/containers/FlutterActivityAndFragmentDelegate.java
View file @
6afc509d
...
...
@@ -19,8 +19,7 @@ import java.util.Arrays;
import
java.util.HashMap
;
import
java.util.Map
;
import
com.idlefish.flutterboost.BoostFlutterView
;
import
com.idlefish.flutterboost.FlutterBoost
;
import
com.idlefish.flutterboost.NewFlutterBoost
;
import
com.idlefish.flutterboost.interfaces.IFlutterViewContainer
;
import
com.idlefish.flutterboost.interfaces.IOperateSyncer
;
...
...
@@ -63,7 +62,9 @@ public class FlutterActivityAndFragmentDelegate implements IFlutterViewContaine
private
final
OnFirstFrameRenderedListener
onFirstFrameRenderedListener
=
new
OnFirstFrameRenderedListener
()
{
@Override
public
void
onFirstFrameRendered
()
{
host
.
onFirstFrameRendered
();
if
(
host
!=
null
){
host
.
onFirstFrameRendered
();
}
}
};
...
...
@@ -136,15 +137,15 @@ public class FlutterActivityAndFragmentDelegate implements IFlutterViewContaine
Log
.
d
(
TAG
,
"Setting up FlutterEngine."
);
// First, check if the host wants to use a cached FlutterEngine.
String
cachedEngineId
=
host
.
getCachedEngineId
();
if
(
cachedEngineId
!=
null
)
{
flutterEngine
=
FlutterEngineCache
.
getInstance
().
get
(
cachedEngineId
);
isFlutterEngineFromHost
=
true
;
if
(
flutterEngine
==
null
)
{
throw
new
IllegalStateException
(
"The requested cached FlutterEngine did not exist in the FlutterEngineCache: '"
+
cachedEngineId
+
"'"
);
}
return
;
}
//
String cachedEngineId = host.getCachedEngineId();
//
if (cachedEngineId != null) {
//
flutterEngine = FlutterEngineCache.getInstance().get(cachedEngineId);
//
isFlutterEngineFromHost = true;
//
if (flutterEngine == null) {
//
throw new IllegalStateException("The requested cached FlutterEngine did not exist in the FlutterEngineCache: '" + cachedEngineId + "'");
//
}
//
return;
//
}
// Second, defer to subclasses for a custom FlutterEngine.
flutterEngine
=
host
.
provideFlutterEngine
(
host
.
getContext
());
...
...
@@ -170,7 +171,8 @@ public class FlutterActivityAndFragmentDelegate implements IFlutterViewContaine
mSyncer
=
NewFlutterBoost
.
instance
().
containerManager
().
generateSyncer
(
this
);
ensureAlive
();
flutterView
=
new
FlutterView
(
host
.
getActivity
(),
host
.
getRenderMode
(),
host
.
getTransparencyMode
());
flutterView
=
new
FlutterView
(
host
.
getActivity
(),
NewFlutterBoost
.
instance
().
platform
().
renderMode
(),
host
.
getTransparencyMode
());
flutterView
.
addOnFirstFrameRenderedListener
(
onFirstFrameRenderedListener
);
flutterSplashView
=
new
FlutterSplashView
(
host
.
getContext
());
...
...
@@ -197,48 +199,10 @@ public class FlutterActivityAndFragmentDelegate implements IFlutterViewContaine
// causes launching Activitys to wait a second or two before launching. By post()'ing this
// behavior we are able to move this blocking logic to after the Activity's launch.
// TODO(mattcarroll): figure out how to avoid blocking the MAIN thread when connecting a surface
new
Handler
().
post
(
new
Runnable
()
{
@Override
public
void
run
()
{
Log
.
v
(
TAG
,
"Attaching FlutterEngine to FlutterView."
);
flutterView
.
attachToFlutterEngine
(
flutterEngine
);
doInitialFlutterViewRun
();
}
});
}
private
void
doInitialFlutterViewRun
()
{
// Don't attempt to start a FlutterEngine if we're using a cached FlutterEngine.
if
(
host
.
getCachedEngineId
()
!=
null
)
{
return
;
}
if
(
flutterEngine
.
getDartExecutor
().
isExecutingDart
())
{
// No warning is logged because this situation will happen on every config
// change if the developer does not choose to retain the Fragment instance.
// So this is expected behavior in many cases.
return
;
}
Log
.
d
(
TAG
,
"Executing Dart entrypoint: "
+
host
.
getDartEntrypointFunctionName
()
+
", and sending initial route: "
+
host
.
getInitialRoute
());
// The engine needs to receive the Flutter app's initial route before executing any
// Dart code to ensure that the initial route arrives in time to be applied.
if
(
host
.
getInitialRoute
()
!=
null
)
{
flutterEngine
.
getNavigationChannel
().
setInitialRoute
(
host
.
getInitialRoute
());
}
// Configure the Dart entrypoint and execute it.
DartExecutor
.
DartEntrypoint
entrypoint
=
new
DartExecutor
.
DartEntrypoint
(
host
.
getAppBundlePath
(),
host
.
getDartEntrypointFunctionName
()
);
flutterEngine
.
getDartExecutor
().
executeDartEntrypoint
(
entrypoint
);
}
void
onResume
()
{
mSyncer
.
onAppear
();
...
...
@@ -267,7 +231,6 @@ public class FlutterActivityAndFragmentDelegate implements IFlutterViewContaine
void
onPause
()
{
Log
.
v
(
TAG
,
"onPause()"
);
mSyncer
.
onDisappear
();
ensureAlive
();
flutterEngine
.
getLifecycleChannel
().
appIsInactive
();
...
...
@@ -277,8 +240,9 @@ public class FlutterActivityAndFragmentDelegate implements IFlutterViewContaine
void
onStop
()
{
Log
.
v
(
TAG
,
"onStop()"
);
ensureAlive
();
mSyncer
.
onDisappear
();
flutterEngine
.
getLifecycleChannel
().
appIsPaused
();
flutterView
.
detachFromFlutterEngine
();
//
flutterView.detachFromFlutterEngine();
}
void
onDestroyView
()
{
...
...
@@ -286,7 +250,7 @@ public class FlutterActivityAndFragmentDelegate implements IFlutterViewContaine
mSyncer
.
onDestroy
();
ensureAlive
();
flutterView
.
removeOnFirstFrameRenderedListener
(
onFirstFrameRenderedListener
);
//
flutterView.removeOnFirstFrameRenderedListener(onFirstFrameRenderedListener);
}
...
...
@@ -312,15 +276,15 @@ public class FlutterActivityAndFragmentDelegate implements IFlutterViewContaine
}
// Destroy our FlutterEngine if we're not set to retain it.
if
(
host
.
shouldDestroyEngineWithHost
())
{
flutterEngine
.
destroy
();
if
(
host
.
getCachedEngineId
()
!=
null
)
{
FlutterEngineCache
.
getInstance
().
remove
(
host
.
getCachedEngineId
());
}
flutterEngine
=
null
;
}
//
if (host.shouldDestroyEngineWithHost()) {
//
flutterEngine.destroy();
//
//
if (host.getCachedEngineId() != null) {
//
FlutterEngineCache.getInstance().remove(host.getCachedEngineId());
//
}
//
//
flutterEngine = null;
//
}
}
...
...
@@ -440,7 +404,7 @@ public class FlutterActivityAndFragmentDelegate implements IFlutterViewContaine
@Override
public
Activity
getContextActivity
()
{
return
(
Activity
)
this
.
host
;
return
(
Activity
)
this
.
host
.
getActivity
()
;
}
@Override
...
...
@@ -450,19 +414,19 @@ public class FlutterActivityAndFragmentDelegate implements IFlutterViewContaine
@Override
public
void
finishContainer
(
Map
<
String
,
Object
>
result
)
{
Activity
activity
=
(
Activity
)
this
.
host
;
this
.
host
.
finishContainer
(
result
)
;
activity
.
finish
();
}
@Override
public
String
getContainerUrl
()
{
return
"flutterPage"
;
return
this
.
host
.
getContainerUrl
()
;
}
@Override
public
Map
getContainerUrlParams
()
{
return
null
;
return
this
.
host
.
getContainerUrlParams
();
}
@Override
...
...
@@ -590,6 +554,16 @@ public class FlutterActivityAndFragmentDelegate implements IFlutterViewContaine
* frame.
*/
void
onFirstFrameRendered
();
void
finishContainer
(
Map
<
String
,
Object
>
result
)
;
String
getContainerUrl
()
;
Map
getContainerUrlParams
()
;
}
...
...
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/containers/FlutterFragment.java
0 → 100644
View file @
6afc509d
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/containers/FlutterSplashView.java
View file @
6afc509d
...
...
@@ -11,7 +11,6 @@ import android.view.View;
import
android.widget.FrameLayout
;
import
com.idlefish.flutterboost.*
;
import
com.idlefish.flutterboost.interfaces.IStateListener
;
import
io.flutter.Log
;
import
io.flutter.embedding.android.FlutterView
;
import
io.flutter.embedding.android.SplashScreen
;
...
...
@@ -84,7 +83,7 @@ public class FlutterSplashView extends FrameLayout {
setSaveEnabled
(
true
);
if
(
mFlutterEngine
==
null
)
{
mFlutterEngine
=
NewFlutterBoost
.
instance
().
engineProvider
()
.
provideEngine
(
context
)
;
mFlutterEngine
=
NewFlutterBoost
.
instance
().
engineProvider
();
}
}
...
...
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/containers/NewBoostFlutterActivity.java
View file @
6afc509d
...
...
@@ -4,11 +4,7 @@ package com.idlefish.flutterboost.containers;
import
android.app.Activity
;
import
android.arch.lifecycle.Lifecycle
;
import
android.arch.lifecycle.LifecycleOwner
;
import
android.arch.lifecycle.Lifecycle
;
import
android.arch.lifecycle.LifecycleOwner
;
import
android.arch.lifecycle.LifecycleRegistry
;
import
android.arch.lifecycle.Lifecycle.Event
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.content.pm.ActivityInfo
;
...
...
@@ -24,8 +20,6 @@ import android.support.annotation.Nullable;
import
android.view.View
;
import
android.view.Window
;
import
android.view.WindowManager
;
import
com.idlefish.flutterboost.FlutterBoost
;
import
com.idlefish.flutterboost.NewFlutterBoost
;
import
com.idlefish.flutterboost.Utils
;
import
io.flutter.Log
;
...
...
@@ -554,7 +548,7 @@ public class NewBoostFlutterActivity extends Activity
@Override
public
FlutterEngine
provideFlutterEngine
(
@NonNull
Context
context
)
{
// No-op. Hook for subclasses.
return
NewFlutterBoost
.
instance
().
engineProvider
()
.
provideEngine
(
this
)
;
return
NewFlutterBoost
.
instance
().
engineProvider
();
}
/**
...
...
@@ -597,6 +591,25 @@ public class NewBoostFlutterActivity extends Activity
public
void
onFirstFrameRendered
()
{
}
@Override
public
void
finishContainer
(
Map
<
String
,
Object
>
result
)
{
Activity
activity
=
this
.
getActivity
();
activity
.
finish
();
}
@Override
public
String
getContainerUrl
()
{
return
"flutterPage"
;
}
@Override
public
Map
getContainerUrlParams
()
{
Map
<
String
,
String
>
params
=
new
HashMap
<>();
params
.
put
(
"aaa"
,
"bbb"
);
return
params
;
}
/**
* The mode of the background of a {@code FlutterActivity}, either opaque or transparent.
*/
...
...
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/interfaces/IFlutterEngineProvider.java
deleted
100755 → 0
View file @
d9ac3683
/*
* The MIT License (MIT)
*
* Copyright (c) 2019 Alibaba Group
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package
com.idlefish.flutterboost.interfaces
;
import
android.content.Context
;
import
com.idlefish.flutterboost.BoostFlutterEngine
;
import
io.flutter.embedding.engine.FlutterEngine
;
/**
* a flutter engine provider
*/
public
interface
IFlutterEngineProvider
{
/**
* create flutter engine, we just hold a single instance now
* @param context
* @return
*/
FlutterEngine
createEngine
(
Context
context
);
/**
* provide a flutter engine
* @param context
* @return
*/
FlutterEngine
provideEngine
(
Context
context
);
/**
* may return null
* @return
*/
FlutterEngine
tryGetEngine
();
}
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/interfaces/IFlutterViewContainer.java
View file @
6afc509d
...
...
@@ -25,7 +25,6 @@ package com.idlefish.flutterboost.interfaces;
import
android.app.Activity
;
import
com.idlefish.flutterboost.BoostFlutterView
;
import
com.idlefish.flutterboost.containers.FlutterSplashView
;
import
java.util.Map
;
...
...
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/interfaces/INativeRouter.java
View file @
6afc509d
...
...
@@ -9,5 +9,4 @@ public interface INativeRouter {
void
openContainer
(
Context
context
,
String
url
,
Map
<
String
,
Object
>
urlParams
,
int
requestCode
,
Map
<
String
,
Object
>
exts
);
void
closeContainer
(
IContainerRecord
record
,
Map
<
String
,
Object
>
result
,
Map
<
String
,
Object
>
exts
);
}
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/interfaces/IPlatform.java
deleted
100755 → 0
View file @
d9ac3683
/*
* The MIT License (MIT)
*
* Copyright (c) 2019 Alibaba Group
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package
com.idlefish.flutterboost.interfaces
;
import
android.app.Application
;
import
android.content.Context
;
import
java.util.Map
;
import
io.flutter.plugin.common.PluginRegistry
;
/**
* APIs that platform(Android App) must provide
*/
public
interface
IPlatform
{
int
IMMEDIATELY
=
0
;
//立即启动引擎
int
ANY_ACTIVITY_CREATED
=
1
;
//当有任何Activity创建时,启动引擎
/**
* get current application
* @return
*/
Application
getApplication
();
/**
* debug or not
* @return
*/
boolean
isDebug
();
/**
* register plugins
* @return
*/
void
registerPlugins
(
PluginRegistry
registry
);
void
openContainer
(
Context
context
,
String
url
,
Map
<
String
,
Object
>
urlParams
,
int
requestCode
,
Map
<
String
,
Object
>
exts
);
void
closeContainer
(
IContainerRecord
record
,
Map
<
String
,
Object
>
result
,
Map
<
String
,
Object
>
exts
);
IFlutterEngineProvider
engineProvider
();
/**
* @return
*
* IMMEDIATELY //立即
* ANY_ACTIVITY_CREATED //当有任何Activity创建的时候
* LAZY //懒加载,尽可能延后
*/
int
whenEngineStart
();
}
This diff is collapsed.
Click to expand it.
android/src/main/java/com/idlefish/flutterboost/interfaces/IStateListener.java
deleted
100644 → 0
View file @
d9ac3683
package
com.idlefish.flutterboost.interfaces
;
import
com.idlefish.flutterboost.FlutterBoostPlugin
;
import
com.idlefish.flutterboost.BoostFlutterEngine
;
import
com.idlefish.flutterboost.BoostFlutterView
;
import
io.flutter.plugin.common.PluginRegistry
;
public
interface
IStateListener
{
void
onEngineCreated
(
BoostFlutterEngine
engine
);
void
onEngineStarted
(
BoostFlutterEngine
engine
);
void
onChannelRegistered
(
PluginRegistry
.
Registrar
registrar
,
FlutterBoostPlugin
channel
);
void
onFlutterViewInited
(
BoostFlutterEngine
engine
,
BoostFlutterView
flutterView
);
void
beforeEngineAttach
(
BoostFlutterEngine
engine
,
BoostFlutterView
flutterView
);
void
afterEngineAttached
(
BoostFlutterEngine
engine
,
BoostFlutterView
flutterView
);
void
beforeEngineDetach
(
BoostFlutterEngine
engine
,
BoostFlutterView
flutterView
);
void
afterEngineDetached
(
BoostFlutterEngine
engine
,
BoostFlutterView
flutterView
);
}
This diff is collapsed.
Click to expand it.
example/android/app/src/main/java/com/taobao/idlefish/flutterboostexample/FlutterFragment.java
deleted
100755 → 0
View file @
d9ac3683
package
com.taobao.idlefish.flutterboostexample
;
import
android.os.Bundle
;
import
android.support.annotation.Nullable
;
import
com.idlefish.flutterboost.containers.BoostFlutterFragment
;
import
com.idlefish.flutterboost.containers.FlutterSplashView
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
FlutterFragment
extends
BoostFlutterFragment
{
@Override
public
void
setArguments
(
@Nullable
Bundle
args
)
{
if
(
args
==
null
)
{
args
=
new
Bundle
();
args
.
putString
(
"tag"
,
""
);
}
super
.
setArguments
(
args
);
}
public
void
setTabTag
(
String
tag
)
{
Bundle
args
=
new
Bundle
();
args
.
putString
(
"tag"
,
tag
);
super
.
setArguments
(
args
);
}
@Override
public
FlutterSplashView
getBoostFlutterView
()
{
return
null
;
}
@Override
public
String
getContainerUrl
()
{
return
"flutterFragment"
;
}
@Override
public
Map
getContainerUrlParams
()
{
Map
<
String
,
String
>
params
=
new
HashMap
<>();
params
.
put
(
"tag"
,
getArguments
().
getString
(
"tag"
));
return
params
;
}
public
static
FlutterFragment
instance
(
String
tag
){
FlutterFragment
fragment
=
new
FlutterFragment
();
fragment
.
setTabTag
(
tag
);
return
fragment
;
}
}
This diff is collapsed.
Click to expand it.
example/android/app/src/main/java/com/taobao/idlefish/flutterboostexample/FlutterFragmentPageActivity.java
View file @
6afc509d
...
...
@@ -9,7 +9,7 @@ import android.support.v7.app.AppCompatActivity;
import
android.view.View
;
import
android.view.Window
;
import
android.view.WindowManager
;
import
com.idlefish.flutterboost.containers.FlutterFragment
;
import
io.flutter.plugin.platform.PlatformPlugin
;
public
class
FlutterFragmentPageActivity
extends
AppCompatActivity
implements
View
.
OnClickListener
{
...
...
@@ -61,16 +61,16 @@ public class FlutterFragmentPageActivity extends AppCompatActivity implements Vi
if
(
mTab1
==
v
)
{
mTab1
.
setBackgroundColor
(
Color
.
YELLOW
);
mFragment
=
FlutterFragment
.
instance
(
"tab1"
);
mFragment
=
FlutterFragment
.
createDefault
(
);
}
else
if
(
mTab2
==
v
)
{
mTab2
.
setBackgroundColor
(
Color
.
YELLOW
);
mFragment
=
FlutterFragment
.
instance
(
"tab2"
);
mFragment
=
FlutterFragment
.
createDefault
(
);
}
else
if
(
mTab3
==
v
)
{
mTab3
.
setBackgroundColor
(
Color
.
YELLOW
);
mFragment
=
FlutterFragment
.
instance
(
"tab3"
);
mFragment
=
FlutterFragment
.
createDefault
(
);
}
else
{
mTab4
.
setBackgroundColor
(
Color
.
YELLOW
);
mFragment
=
FlutterFragment
.
instance
(
"tab4"
);
mFragment
=
FlutterFragment
.
createDefault
(
);
}
getSupportFragmentManager
()
...
...
This diff is collapsed.
Click to expand it.
example/android/app/src/main/java/com/taobao/idlefish/flutterboostexample/FlutterPageActivity.java
deleted
100755 → 0
View file @
d9ac3683
package
com.taobao.idlefish.flutterboostexample
;
import
com.idlefish.flutterboost.containers.BoostFlutterActivity
;
import
com.idlefish.flutterboost.containers.FlutterSplashView
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
FlutterPageActivity
extends
BoostFlutterActivity
{
@Override
public
FlutterSplashView
getBoostFlutterView
()
{
return
null
;
}
/**
* 该方法返回当前Activity在Flutter层对应的name,
* 混合栈将会在flutter层根据这个名字,在注册的Route表中查找对应的Widget
*
* 在flutter层有注册函数:
* FlutterBoost.singleton.registerPageBuilders({
* 'first': (pageName, params, _) => FirstRouteWidget(),
* 'second': (pageName, params, _) => SecondRouteWidget(),
* ...
* });
*
* 该方法中返回的就是注册的key:first , second
*
* @return
*/
@Override
public
String
getContainerUrl
()
{
return
"flutterPage"
;
}
/**
* 该方法返回的参数将会传递给上层的flutter对应的Widget
*
* 在flutter层有注册函数:
* FlutterBoost.singleton.registerPageBuilders({
* 'first': (pageName, params, _) => FirstRouteWidget(),
* 'second': (pageName, params, _) => SecondRouteWidget(),
* ...
* });
*
* 该方法返回的参数就会封装成上面的params
*
* @return
*/
@Override
public
Map
getContainerUrlParams
()
{
Map
<
String
,
String
>
params
=
new
HashMap
<>();
params
.
put
(
"aaa"
,
"bbb"
);
return
params
;
}
}
This diff is collapsed.
Click to expand it.
example/android/app/src/main/java/com/taobao/idlefish/flutterboostexample/MyApplication.java
View file @
6afc509d
...
...
@@ -5,7 +5,6 @@ import android.content.Context;
import
com.idlefish.flutterboost.*
;
import
com.idlefish.flutterboost.interfaces.IContainerRecord
;
import
com.idlefish.flutterboost.interfaces.IFlutterEngineProvider
;
import
java.util.Map
;
...
...
@@ -16,48 +15,6 @@ public class MyApplication extends FlutterApplication {
@Override
public
void
onCreate
()
{
super
.
onCreate
();
//
// FlutterBoost.init(new Platform() {
//
// @Override
// public Application getApplication() {
// return MyApplication.this;
// }
//
// @Override
// public boolean isDebug() {
// return true;
// }
//
// @Override
// public void openContainer(Context context, String url, Map<String, Object> urlParams, int requestCode, Map<String, Object> exts) {
// PageRouter.openPageByUrl(context, url, urlParams, requestCode);
// }
//
// @Override
// public IFlutterEngineProvider engineProvider() {
// return new BoostEngineProvider() {
// @Override
// public BoostFlutterEngine createEngine(Context context) {
// return new BoostFlutterEngine(context);
// }
// };
// }
//
// @Override
// public int whenEngineStart() {
// return ANY_ACTIVITY_CREATED;
// }
// });
// FlutterBoostPlugin.addActionAfterRegistered(new FlutterBoostPlugin.ActionAfterRegistered() {
// @Override
// public void onChannelRegistered(FlutterBoostPlugin channel) {
// //platform view register should use FlutterPluginRegistry instread of BoostPluginRegistry
// TextPlatformViewPlugin.register(FlutterBoost.singleton().engineProvider().tryGetEngine().getPluginRegistry());
// }
// });
INativeRouter
router
=
new
INativeRouter
()
{
@Override
...
...
@@ -65,12 +22,14 @@ public class MyApplication extends FlutterApplication {
PageRouter
.
openPageByUrl
(
context
,
url
,
urlParams
);
}
@Override
public
void
closeContainer
(
IContainerRecord
record
,
Map
<
String
,
Object
>
result
,
Map
<
String
,
Object
>
exts
)
{
}
};
Platform
platform
=
new
NewFlutterBoost
.
ConfigBuilder
(
this
,
router
).
build
();
Platform
platform
=
new
NewFlutterBoost
.
ConfigBuilder
(
this
,
router
)
.
isDebug
(
true
)
.
whenEngineStart
(
NewFlutterBoost
.
ConfigBuilder
.
ANY_ACTIVITY_CREATED
)
.
build
();
NewFlutterBoost
.
instance
().
init
(
platform
);
}
}
This diff is collapsed.
Click to expand it.
example/android/app/src/main/java/com/taobao/idlefish/flutterboostexample/PageRouter.java
View file @
6afc509d
...
...
@@ -24,7 +24,7 @@ public class PageRouter {
context
.
startActivity
(
NewBoostFlutterActivity
.
createDefaultIntent
(
context
));
return
true
;
}
else
if
(
url
.
startsWith
(
FLUTTER_FRAGMENT_PAGE_URL
))
{
//
context.startActivity(new Intent(context, FlutterFragmentPageActivity.class));
context
.
startActivity
(
new
Intent
(
context
,
FlutterFragmentPageActivity
.
class
));
return
true
;
}
else
if
(
url
.
startsWith
(
NATIVE_PAGE_URL
))
{
context
.
startActivity
(
new
Intent
(
context
,
NativePageActivity
.
class
));
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment