private Handler handler = new Handler();
Handler() 此构造函数在 Android 11 /R 之后已弃用。
在 Handler 构造期间隐式选择 Looper 会导致操作无声地丢失(如果 Handler 不期待新任务并退出)、崩溃(如果有时在没有 Looper 活动的线程上创建处理程序)或竞争条件,处理程序关联的线程不是作者预期的。
相反,使用 Executor 或 显式指定 Looper,使用 Looper#getMainLooper {link android.view.View#getHandler} 或类似方法。如果为了兼容性需要隐式线程本地行为,请使用 new Handler(Looper.myLooper())。
解决
1、添加 Looper.getMainLooper() 或 Looper.myLooper() 方法。
private final Handler handler = new Handler(Looper.getMainLooper());
private final Handler handler = new Handler(Looper.myLooper());
new Handler() 变更为 new Handler(Looper.myLooper())
new Handler(Handler.Callback callback) 变更为 new Handler(Looper.myLooper(), callback
refs:
官方API:链接。
https://stackoverflow.com/questions/61023968/what-do-i-use-now-that-handler-is-deprecated
除了startActivityForResult()方法之外,requestPermissions()方法也被废弃了。至于理由都是一样的,推荐使用Activity Result API。
详细替换方案见: https://developer.android.com/training/basics/intents/result?hl=zh-cn#java https://blog.csdn.net/guolin_blog/article/details/121063078
refs:标签:API,handler,deprecated,myLooper,Handler,Looper,new,Android From: https://www.cnblogs.com/bluestorm/p/17511059.html
android官网:Activity Result API