我正在尝试在现有的 android 应用程序中集成一个颤振模块。使用以下代码启动视图工作正常:
private fun startFlutterActivity() {
val intent = FlutterActivity.withCachedEngine("default_engine").build(this)
startActivity(intent)
}
Run Code Online (Sandbox Code Playgroud)
但是我不确定如何传递额外的数据,例如一个 id 来为 flutter 组件获取数据。我知道你可以建立一个消息通道,但这似乎是传递东西的大量开销。
我正在使用LeakCanary检测应用程序中的内存泄漏。我使用它成功地识别并修复了一些泄漏,但是我正在努力寻找该泄漏的根源:
* android.support.constraint.ConstraintLayout has leaked:
* Toast$TN.mNextView
* ? LinearLayout.mContext
* ? HomeActivity.!(mDelegate)!
* ? AppCompatDelegateImplN.!(mActionBar)!
* ? ToolbarActionBar.!(mDecorToolbar)!
* ? ToolbarWidgetWrapper.!(mToolbar)!
* ? Toolbar.mParent
* ? ConstraintLayout
* Reference Key: 552b5bc5-409d-44c4-8412-87341237ae6d
* Device: samsung samsung SM-G960F starltexx
* Android Version: 8.0.0 API: 26 LeakCanary: 1.6.2 0ebc1fc
* Durations: watch=5769ms, gc=153ms, heap dump=933ms, analysis=5802ms
Run Code Online (Sandbox Code Playgroud)
这是由Android SDK或应用专用代码引起的吗?
在我的库中,我经常公开将字符串作为参数的方法.我应该总是检查字符串参数是否等于null?或者可以忽略null导致价值的可能性NullreferenceException?
例:
public static void Parse(string line)
{
string[] splits = line.Split(' ');
}
Run Code Online (Sandbox Code Playgroud)
在这种方法中,line可能null会导致Parse抛出一个NullreferenceException.(具体地讲,因为尝试调用的Split一个null值.)我应该检查是否line是null为了防止异常被抛出?