sunzxyong / recovery Goto Github PK
View Code? Open in Web Editor NEWa crash recovery framework.(一个App异常恢复框架)
License: Apache License 2.0
a crash recovery framework.(一个App异常恢复框架)
License: Apache License 2.0
Crash log
07-25 21:06:58.478 18718-18718/? W/System.err: java.lang.IllegalAccessException: java.lang.Class<com.android.internal.os.RuntimeInit$UncaughtHandler> is not accessible from java.lang.Class<com.zxy.recovery.c.a>
07-25 21:06:58.479 18718-18718/? W/System.err: at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
at com.zxy.recovery.c.a.a(MyApplication:26)
at com.zxy.recovery.c.a.a(MyApplication:37)
at com.zxy.recovery.core.c.uncaughtException(MyApplication:99)
at com.tencent.bugly.crashreport.crash.f.b(MyApplication:354)
at com.tencent.bugly.crashreport.crash.f.uncaughtException(MyApplication:372)
at com.amap.api.a.a.iv.uncaughtException(Unknown Source)
at com.amap.api.a.a.jm.uncaughtException(Unknown Source)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1063)
07-25 21:06:58.651 19636-19636/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.plusmoney.managerplus:recover, PID: 19636
java.lang.RuntimeException: Unable to start service com.zxy.recovery.core.RecoveryService@c36d447 with Intent { cmp=com.plusmoney.managerplus/com.zxy.recovery.core.RecoveryService (has extras) }: com.zxy.recovery.b.a: The context is not initialized
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3495)
at android.app.ActivityThread.-wrap23(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1674)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6523)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
Caused by:
我们为应用的正式版开启了静默恢复,结果不生效;在开发版上使用非静默恢复是生效的。
代码如下:
Recovery.getInstance()
.debug(IS_DEV)
//开发版开启调试页面,生产版启用静默恢复
.silent(!IS_DEV, Recovery.SilentMode.RECOVER_TOP_ACTIVITY)
.recoverInBackground(false)
.init(appContext);
这个应该与Android8.0的Service机制相关吧?
在 Android 8.0 之前,创建前台服务的方式通常是先创建一个后台服务,然后将该服务推到前台。
Android 8.0 有一项复杂功能;系统不允许后台应用创建后台服务。 因此,Android 8.0 引入了一种全新的方法,即 Context.startForegroundService(),以在前台启动新服务。
在系统创建服务后,应用有五秒的时间来调用该服务的 startForeground() 方法以显示新服务的用户可见通知。
如果应用在此时间限制内未调用 startForeground(),则系统将停止服务并声明此应用为 ANR。
以下是你在清空缓存的时候的日志
E/Recovery: slice-slice_9-classes.dex delete success!
10-09 11:13:22.557 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-support-annotations-24.2.0_5a9dbf2826c2e8ede6e3fe3707e72036fb2d3eaa-classes.dex delete success!
10-09 11:13:22.558 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_8-classes.dex delete success!
10-09 11:13:22.559 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_7-classes.dex delete success!
10-09 11:13:22.559 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_6-classes.dex delete success!
10-09 11:13:22.559 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_5-classes.dex delete success!
10-09 11:13:22.560 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_4-classes.dex delete success!
10-09 11:13:22.560 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_3-classes.dex delete success!
10-09 11:13:22.561 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_2-classes.dex delete success!
10-09 11:13:22.561 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_1-classes.dex delete success!
10-09 11:13:22.561 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_0-classes.dex delete success!
10-09 11:13:22.561 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-internal_impl-24.2.0_f3ada111e6bc1cdc08ad200f4ef2a809d1e10c9e-classes.dex delete success!
10-09 11:13:22.562 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-internal_impl-24.2.0_f27703e81145620e952de8dba46bdd27bd30a81b-classes.dex delete success!
10-09 11:13:22.562 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-internal_impl-24.2.0_cb3f49a4abbb6e1b576c2e319604d8ddc0707c02-classes.dex delete success!
10-09 11:13:22.562 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-internal_impl-24.2.0_6954d58f06d6c2aa8d306dc850540762a75c747b-classes.dex delete success!
10-09 11:13:22.562 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-internal_impl-24.2.0_29afaf939f2a5589aafbd5b8b7b3134158285bf8-classes.dex delete success!
10-09 11:13:22.562 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-support-vector-drawable-24.2.0_77f5062caea030a91c3c08d95554834ff5b12f14-classes.dex delete success!
10-09 11:13:22.563 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-support-v4-24.2.0_ea32c5302a72baeda4039dedf01bcbab66157b66-classes.dex delete success!
10-09 11:13:22.563 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-support-media-compat-24.2.0_d51a0cd4f0029bedd5f49afc4c1e854ad5a7b320-classes.dex delete success!
10-09 11:13:22.563 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-support-fragment-24.2.0_1ade706806d386a7ff873119023d2d6031e44ddc-classes.dex delete success!
10-09 11:13:22.563 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-support-core-utils-24.2.0_d0d1d5bff91636da1c74ce2eb56194d4bdb5ab5e-classes.dex delete success!
10-09 11:13:22.564 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-support-core-ui-24.2.0_5796e4dbe4151db411f2fb8149603fff5c5dcc33-classes.dex delete success!
10-09 11:13:22.564 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-support-compat-24.2.0_c72e5c683378ec2d4f7902c0734b60a0139d1fcc-classes.dex delete success!
10-09 11:13:22.564 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-recyclerview-v7-24.2.0_7f52a64cf83257c9eaf0cdb4b4ce6ac6f8d0660d-classes.dex delete success!
10-09 11:13:22.564 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-design-24.2.0_d4335ab3dcde9dda0866d0488a23aa5b8029c3c5-classes.dex delete success!
10-09 11:13:22.564 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-appcompat-v7-24.2.0_91248059aeb0ce5fb6363662dda30b413f981e4e-classes.dex delete success!
10-09 11:13:22.565 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-animated-vector-drawable-24.2.0_01cd59bc7519ab4eeba87fc80884c59f3126a47a-classes.dex delete success!
10-09 11:13:22.565 4581-4581/com.zxy.recovery.test:recover E/Recovery: com.android.opengl.shaders_cache delete success!
10-09 11:13:22.571 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-support-compat-24.2.0_c72e5c683378ec2d4f7902c0734b60a0139d1fcc-classes.dex delete success!
10-09 11:13:22.572 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-support-core-ui-24.2.0_5796e4dbe4151db411f2fb8149603fff5c5dcc33-classes.dex delete success!
10-09 11:13:22.576 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-appcompat-v7-24.2.0_91248059aeb0ce5fb6363662dda30b413f981e4e-classes.dex delete success!
10-09 11:13:22.576 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-support-annotations-24.2.0_5a9dbf2826c2e8ede6e3fe3707e72036fb2d3eaa-classes.dex delete success!
10-09 11:13:22.577 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-support-core-utils-24.2.0_d0d1d5bff91636da1c74ce2eb56194d4bdb5ab5e-classes.dex delete success!
10-09 11:13:22.577 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-internal_impl-24.2.0_29afaf939f2a5589aafbd5b8b7b3134158285bf8-classes.dex delete success!
10-09 11:13:22.578 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-internal_impl-24.2.0_6954d58f06d6c2aa8d306dc850540762a75c747b-classes.dex delete success!
10-09 11:13:22.580 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-animated-vector-drawable-24.2.0_01cd59bc7519ab4eeba87fc80884c59f3126a47a-classes.dex delete success!
10-09 11:13:22.580 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-internal_impl-24.2.0_cb3f49a4abbb6e1b576c2e319604d8ddc0707c02-classes.dex delete success!
10-09 11:13:22.582 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-recyclerview-v7-24.2.0_7f52a64cf83257c9eaf0cdb4b4ce6ac6f8d0660d-classes.dex delete success!
10-09 11:13:22.584 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-support-vector-drawable-24.2.0_77f5062caea030a91c3c08d95554834ff5b12f14-classes.dex delete success!
10-09 11:13:22.584 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-design-24.2.0_d4335ab3dcde9dda0866d0488a23aa5b8029c3c5-classes.dex delete success!
10-09 11:13:22.585 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-support-media-compat-24.2.0_d51a0cd4f0029bedd5f49afc4c1e854ad5a7b320-classes.dex delete success!
10-09 11:13:22.586 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-support-v4-24.2.0_ea32c5302a72baeda4039dedf01bcbab66157b66-classes.dex delete success!
10-09 11:13:22.586 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-internal_impl-24.2.0_f3ada111e6bc1cdc08ad200f4ef2a809d1e10c9e-classes.dex delete success!
10-09 11:13:22.587 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_4-classes.dex delete success!
10-09 11:13:22.588 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-com.android.support-support-fragment-24.2.0_1ade706806d386a7ff873119023d2d6031e44ddc-classes.dex delete success!
10-09 11:13:22.588 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_3-classes.dex delete success!
10-09 11:13:22.588 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_6-classes.dex delete success!
10-09 11:13:22.589 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_5-classes.dex delete success!
10-09 11:13:22.589 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_8-classes.dex delete success!
10-09 11:13:22.589 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_7-classes.dex delete success!
10-09 11:13:22.590 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_9-classes.dex delete success!
10-09 11:13:22.590 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-internal_impl-24.2.0_f27703e81145620e952de8dba46bdd27bd30a81b-classes.dex delete success!
10-09 11:13:22.591 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_0-classes.dex delete success!
10-09 11:13:22.592 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_2-classes.dex delete success!
10-09 11:13:22.592 4581-4581/com.zxy.recovery.test:recover E/Recovery: slice-slice_1-classes.dex delete success!
10-09 11:13:22.592 4581-4581/com.zxy.recovery.test:recover E/Recovery: recovery_info.xml delete success!
发现你是这么获取到file
private static File getDataDir() {
return new File(File.separator + "data" + File.separator + "data" + File.separator + Recovery.getInstance().getContext().getPackageName());
}
这个能不能设置崩溃之后,自动保存日志到本地文件夹,并且文件夹是可以自己设置的啊????
能否使用getExternalStoragePublicDirectory建立安全目录?以替换sdcard?
当项目也使用了http://sms.mob.com/#/ 的短信验证的SDK时,程序出错后,无法重启Activity。
请问,在使用框架后,崩溃日志是不是只能在手机端显示,Android studio里的logcat就不在显示了?
default language for some strings is chinese, but should be english, and chinese strings should be in a separate strings.xml file
我项目里面使用了高德地图,当有异常的时候,是跳进去高德自定义的handler里不是Recovery里面的
Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.zxy.android:recovery:0.1.4.
Open File
Show Details
Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Could not resolve com.zxy.android:recovery:0.1.4.
Open File
Show Details
Unable to resolve dependency for ':app@debugUnitTest/compileClasspath': Could not resolve com.zxy.android:recovery:0.1.4.
Open File
Show Details
Unable to resolve dependency for ':app@release/compileClasspath': Could not resolve com.zxy.android:recovery:0.1.4.
Open File
Show Details
Unable to resolve dependency for ':app@releaseUnitTest/compileClasspath': Could not resolve com.zxy.android:recovery:0.1.4.
Open File
Show Details
这个能否解决?谢谢
FATAL EXCEPTION: main
Process: com.zxy.recovery.test, PID: 8593
java.lang.RuntimeException: Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication: java.lang.IllegalStateException: java.lang.ClassNotFoundException: com.zxy.recovery.test.App
at android.app.LoadedApk.makeApplication(LoadedApk.java:587)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4792)
at android.app.ActivityThread.access$1900(ActivityThread.java:158)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1426)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5564)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.IllegalStateException: java.lang.ClassNotFoundException: com.zxy.recovery.test.App
at com.android.tools.fd.runtime.BootstrapApplication.createRealApplication(BootstrapApplication.java:219)
at com.android.tools.fd.runtime.BootstrapApplication.attachBaseContext(BootstrapApplication.java:238)
at android.app.Application.attach(Application.java:187)
at android.app.Instrumentation.newApplication(Instrumentation.java:996)
at android.app.Instrumentation.newApplication(Instrumentation.java:980)
at android.app.LoadedApk.makeApplication(LoadedApk.java:582)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4792)
at android.app.ActivityThread.access$1900(ActivityThread.java:158)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1426)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5564)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.ClassNotFoundException: com.zxy.recovery.test.App
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:308)
at java.lang.Class.forName(Class.java:272)
at com.android.tools.fd.runtime.BootstrapApplication.createRealApplication(BootstrapApplication.java:207)
at com.android.tools.fd.runtime.BootstrapApplication.attachBaseContext(BootstrapApplication.java:238)
at android.app.Application.attach(Application.java:187)
at android.app.Instrumentation.newApplication(Instrumentation.java:996)
at android.app.Instrumentation.newApplication(Instrumentation.java:980)
at android.app.LoadedApk.makeApplication(LoadedApk.java:582)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4792)
at android.app.ActivityThread.access$1900(ActivityThread.java:158)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1426)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5564)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.zxy.recovery.test.App" on path: DexPathList[[zip file "/data/app/com.zxy.recovery.test-2/base.apk"],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:308)
at java.lang.Class.forName(Class.java:272)
at com.android.tools.fd.runtime.BootstrapApplication.createRealApplication(BootstrapApplication.java:207)
at com.android.tools.fd.runtime.BootstrapApplication.attachBaseContext(BootstrapApplication.java:238)
at android.app.Application.attach(Application.java:187)
at android.app.Instrumentation.newApplication(Instrumentation.java:996)
at android.app.Instrumentation.newApplication(Instrumentation.java:980)
at android.app.LoadedApk.makeApplication(LoadedApk.java:582)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4792)
at android.app.ActivityThread.access$1900(ActivityThread.java:158)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1426)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5564)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Suppressed: java.lang.ClassNotFoundException: com.zxy.recovery.test.App
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 20 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
@Sunzxyong 你好
RecoveryHandler里面的killProcess方法调用了:
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(10);// 实际是调用了Runtime.getRuntime().exit
起到杀进程的作用,为什么不直接调用Runtime.getRuntime().exit(10)
呢?
Please use the version after 0.1.0,this version has a major update and optimization!
Finally, Thank all the friends~
can't find the crash file,i have saved it.
在英文版上:RESTART_AND_CLEAR - Restart App and clear data
在中文版上:重启应用并清空缓存数据
如果是清空缓存的话,英文应该是用cache吧?这个好像有点古怪
在英文版上静默模式的说明代码里面,silent是true的,但在中文文档里面却写成了false,这个是不是写错了?
在函数的说明文档上,并没有说明skip函数的作用,只有在更新日志里面说明了这个函数的作用。
RecoveryCallBack的函数说明用法,而且throwable不是包含了大部分信息,为什么还要分开这么多个函数?
你好 问一个在使用中的问题,在react-native中使用 开启debug弹窗 点击恢复可以重新打开界面 但是使用静默恢复不行 是因为错误是javascript的错 所以不执行重启?
当activity里面调用requestWindowFeature(Window.FEATURE_NO_TITLE);这个的时候就会导致崩溃
when i click clearAppData button,your sample app will crash,and the crash log:
Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication: java.lang.IllegalStateException: java.lang.ClassNotFoundException: com.zxy.recovery.test.App
恢复的话 是新建了activity 还是?? 恢复的过程远离是什么? 静默恢复页面为什么会闪一下呢?? 在部分机型上还会有ANR的情况出现。 求解啊 大神
异常日志的保存路径在哪里?
请问对单Activity,多Fragment的架构是否支持?
设置了跳过recoveryActivity,在主页连续crash两次,然后第二次就退出程序没有重新开启应用了。这是什么原因呢
当手机没有安装支付宝时 没有使用Recovery的时候程序会自动跳转到H5PayActivity 但是使用Recovery会保存 建议可以过滤掉某些错误 或者 某些页面不进行 处理
如题
Demo代码运行也一样,不会崩溃。界面无响应提示关闭。
不使用本库直接崩溃。
补充下:
测试三星华为部分机型没问题。
Error:(75, 13) Failed to resolve: com.zxy.android:recovery:0.1.0
Show in File
Show in Project Structure dialog
Hi,你好。看了你的源码,觉得这个框架写得很棒,但是发现多进程下会出现问题。
因为每个进程内存都是独立的,无法把不同进程的Activity放到同一个List里。所以在恢复Activity任务栈时会出现问题。
想了下,暂时只想到一个不是很优雅的方法:对这个Activty列表写入到本地来保存,实现跨进程共享。
没做代码验证,希望能与大家讨论出更好的方法,谢谢~
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.