我的4GB内存,英特尔酷睿i5系统降低了Android Studio的高磁盘和RAM使用率(我可以在任务管理器中看到它,没有别的东西使用RAM和磁盘).对于一个简单的项目,gradle构建大约需要10-15分钟.
有什么解决方案吗?
我正在以编程方式向recyclerview位置0添加一个项目
public void addQuestion(Question question){
this.questionList.add(0, question);
notifyItemInserted(0);
}
Run Code Online (Sandbox Code Playgroud)
这项工作非常好,项目确实出现在顶部的列表中,但用户必须向上滚动才能看到新项目.
是否有任何技巧如何项目出现在顶部,Recyclerview自动滚动?
目标:
我想从pdf中绘制/写/绘制位图并将它们保存在一起,这样我就可以发送电子邮件了.
细节:
我有多个Pdf文件包含5-20每个页面,现在正在从中提取位图pdfs并将它们加载到片段中ViewPager,我可以在其中滑动它们并写入/绘制或我想要的任何内容.保存/恢复我正在使用的位图的当前状态onSaveInstanceState.这样我就可以在来回滑动的同时检索位图的最后一个阶段.
像这样的东西:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable("Bitmap", bitmap);
}
Run Code Online (Sandbox Code Playgroud)
问题:
用户按下发送电子邮件按钮,我应该能够保存所有图像,无论他在哪个页面,即他已经编辑了5到10页,现在他在第10页,按下发送按钮我应该能够检索所有编辑过的图像.
问题2:
正如我所说,图像的数量大约为5-20,保存状态的onSaveInstanceState效果很好,但它会不断增加内存中的应用程序内存,并且应用程序在应用程序大小所在的第10个图像处崩溃150Mbs.
但是将图像保存为捆绑包onSaveInstanceState也是必要的,因为当用户向后滑动时,它有助于更快地加载图像.
所以我想我们有什么方法可以创建一个自定义捆绑类,我们可以在滚动5页之后将图像写入磁盘并清除内存并在用户向后滚动时将其从磁盘读回内存?这听起来有道理吗?
我尝试过的:
作为位图在单独的碎片装我试图挽救位图到外部存储中OnDestroy,但保存位图到磁盘上是一个不小的任务,它需要一定的时间,虽然现在用的AsyncTask
,但是当用户刷卡有点快片段之间,然后保存位图在OnDestroy做似乎不是一个方便的方式.
这就是为什么我问这个问题所以也许你对这种情况有了更好的了解,并且可以帮助我以更方便的方式实现这个目标.
那么你的目的是如何处理这种情况呢?
注意:
如果您无法理解情况并需要更多信息,请给我留言,我会更新问题.
谢谢
网页可以在我的内部正常打开,WebView但无法响应print网页中存在的按钮。当我print从桌面浏览器中单击该按钮时,它将打开浏览器的打印界面,在该界面中我可以将文件另存为PDF。我也想这样做,我已经搜索了很多,但找不到任何信息,我该怎么做?
我的问题:
我有70个图像,并且在每个图像上我想放置透明按钮,当用户点击它时,它会播放关于图像上的斑点的短音频.图像显示在
ViewPager.
我的解决方案
现在我想到的是我可以创建70个片段,每个片段包含相应的图像作为背景,我可以轻松地在每个点上分配按钮,并为那些将播放各自音频的按钮分配动作.
但
这似乎不是一个在单个应用程序中包含70个片段的好方法.
那么我怎样才能做到这一点,以及我可以使用哪种更好的方法呢?
我有一个领域列表,我想按字母顺序对列表进行排序.
Collections.sort(contacts, new java.util.Comparator<Contacts>() {
@Override
public int compare(Contacts l1, Contacts l2) {
String s1 = l1.getName();
String s2 = l2.getName();
return s1.compareToIgnoreCase(s2);
}
});
Run Code Online (Sandbox Code Playgroud)
但是这个逻辑并不是我在下面发布崩溃报告,请通过它.
java.lang.UnsupportedOperationException: Replacing and element is not supported.
at io.realm.RealmResults$RealmResultsListIterator.set(RealmResults.java:826
at io.realm.RealmResults$RealmResultsListIterator.set(RealmResults.java:757)at java.util.Collections.sort(Collections.java:1909)
Run Code Online (Sandbox Code Playgroud)
请通过我的帖子,并建议我一些解决方案.
如果我们使用最新的Android Studio 3.3 Canary 6创建一个新项目,默认情况下它支持Androidx.
但问题是由于导入冲突,我几乎无法使用任何第三方库.
图书馆使用
android.support.v7.app.*
而androidx使用 androidx.*
我认为设置android.enableJetifier=true应该通过自动将第三方库转换为使用Androidx来解决此问题,但它根本不起作用并且它清楚地显示消息说
无法解决
android.support.v7.app.whatever
我知道需要对第三方库进行重构,androidx但是当然需要一些时间才能将它们全部重构为Androix.同时这个问题是否有任何可能的解决方案?
关于此的一些问题
我正在SplashActivity使用EventBus的 postSticky方法将数据发送到主活动 ,并根据该数据创建MainActivity使用中的标签ViewPager.
到目前为止它工作得很好,我可以ViewPager在@Subscribe onEvent(Example data)方法中设置.
例如:
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEvent(Example event){
mainContentList = event.mainContentList;
if (mViewPager != null) {
setupViewPager(mViewPager, mainContentList);
}
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
}
Run Code Online (Sandbox Code Playgroud)
当我们调用该问题出现MainActivity的ActivityC,
现在@Subscribe onEvent(Example data)不会被调用,因为我们只是从它发布它SplashActivity,因此它不会被调用而且ViewPager不会被更新.
我想要的是:
我想尽早从StickyPost获取数据,这样我就可以初始化活动ViewPager的OnCreate方法.
我知道我可以使用应用程序级别Singleton或创建DataHolder类等来存储数据但是无论如何要实现这个目的EventBus吗?
感谢您的时间,如果您需要更多信息,请告诉我,我会更新.
这是我的清单文件:
<activity
android:screenOrientation="portrait"
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="@android:style/Theme.Translucent" />
Run Code Online (Sandbox Code Playgroud)
这是我的活动:
@Override
public void onBackPressed() {
InterstitialAd interstitialAd= new InterstitialAd(this);
interstitialAd.setAdUnitId(getString(R.string.interstitial_full_screen));
AdRequest adRequest = new AdRequest.Builder().build();
interstitialAd.loadAd(adRequest);
interstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
if (interstitialAd.isLoaded()) {
interstitialAd.show();
}
}
@Override
public void onAdClosed() {
super.onAdClosed();
finish();
}
});
}
Run Code Online (Sandbox Code Playgroud)
在按下后退按钮的同时,我只获得了2-3次广告屏幕.所以,我可以在每次按下后按钮时解决它.