我有RecyclerView几个图像使用Picasso.在向上和向下滚动一段时间后,应用程序内存不足,并显示如下消息:
E/dalvikvm-heap? Out of memory on a 3053072-byte allocation.
I/dalvikvm? "Picasso-/wp-content/uploads/2013/12/DSC_0972Small.jpg" prio=5 tid=19 RUNNABLE
I/dalvikvm? | group="main" sCount=0 dsCount=0 obj=0x42822a50 self=0x59898998
I/dalvikvm? | sysTid=25347 nice=10 sched=0/0 cgrp=apps/bg_non_interactive handle=1500612752
I/dalvikvm? | state=R schedstat=( 10373925093 843291977 45448 ) utm=880 stm=157 core=3
I/dalvikvm? at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
I/dalvikvm? at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:623)
I/dalvikvm? at com.squareup.picasso.BitmapHunter.decodeStream(BitmapHunter.java:142)
I/dalvikvm? at com.squareup.picasso.BitmapHunter.hunt(BitmapHunter.java:217)
I/dalvikvm? at com.squareup.picasso.BitmapHunter.run(BitmapHunter.java:159)
I/dalvikvm? at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:390)
I/dalvikvm? at java.util.concurrent.FutureTask.run(FutureTask.java:234)
I/dalvikvm? at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
I/dalvikvm? at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
I/dalvikvm? at java.lang.Thread.run(Thread.java:841)
I/dalvikvm? at com.squareup.picasso.Utils$PicassoThread.run(Utils.java:411)
I/dalvikvm? [ 08-10 …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现保存和恢复状态,但是当用Fragmenta 替换main PreferenceFragment然后按下后退按钮时遇到问题.我的主要Fragment包括ViewPager一个FragmentPagerAdapter用3 Fragments来刷卡.点击后退按钮后,没有调用Fragment.onCreateView()我的3 Fragment秒的回调.我已经尝试了所有我在这里遇到的解决方案,但我无法解决这个问题.
另一个可能需要注意的重要事项是,我的3s ViewPager Fragment的数据存储在单独的类中,这些类是实例化的,可以通过Activity.3 Fragments包含RecyclerView用于列出大量数据的s.这样做是为了清洁,但也是为了使这些数据持续存在Activity.这可能不是问题,因为它在启动应用程序时工作正常,但也因为主要问题是我Fragments没有重新创建.
意外行为:
在应用程序创建时,一切正常,但是当我用另一个替换我的main Fragment(包含ViewPagera FragmentPagerAdapter),然后按下后退按钮时,不会重新创建Fragments中的s ViewPager.在onCreateView()我的主要的Fragment 被调用.
问题:
我错过了什么?是否还应该创建一些其他回调?我应该在哪里以及如何重建Fragments?
我试过了什么:
FragmentAdapter使用,但我真的应该使用这里getSupportFragmentManager()的解决方案.编辑:使用错误FragmentManager实际上是我的麻烦的来源.请参阅下面的答案.
@Override public int getItemPosition(Object object) {return POSITION_NONE;}到FragmentPagerAdapter,如此处所示. …android android-lifecycle android-fragments android-viewpager
我之前在Python工作过,有一个列表字典非常顺利(即一个键对应一个东西列表).我正努力在vba中实现同样的目标.假设我在excel表中有以下数据:
Flanged_connections 6
Flanged_connections 8
Flanged_connections 10
Instrument Pressure
Instrument Temperature
Instrument Bridle
Instrument Others
Piping 1
Piping 2
Piping 3
Run Code Online (Sandbox Code Playgroud)
现在我想读取数据并将其存储在键所在的字典中Flanged_connections,Instrument并且Piping值是第二列中的相应值.我希望数据看起来像这样:
'key' 'values':
'Flanged_connections' '[6 8 10]'
'Instrument' '["Pressure" "Temperature" "Bridle" "Others"]'
'Piping' '[1 2 3]'
Run Code Online (Sandbox Code Playgroud)
然后通过dict.Item("Piping")将列表[1 2 3]作为结果来获取列表.所以我开始考虑做类似的事情:
For Each row In inputRange.Rows
If Not equipmentDictionary.Exists(row.Cells(equipmentCol).Text) Then
equipmentDictionary.Add row.Cells(equipmentCol).Text, <INSERT NEW LIST>
Else
equipmentDictionary.Add row.Cells(equipmentCol).Text, <ADD TO EXISTING LIST>
End If
Next
Run Code Online (Sandbox Code Playgroud)
这似乎有点乏味.有更好的方法吗?我试图寻找在VBA中使用数组,它似乎比Java,C++和Python的有点不同,有stuft喜欢redim preserve和喜欢.这是在vba中使用数组的唯一方法吗?
基于@varocarbas的评论,我创建了一个集合字典.这是我理解正在发生的事情的最简单方法,尽管它可能不是最有效的.其他解决方案可能也会起作用(未经我测试).这是我建议的解决方案,它提供了正确的输出: …
我有一个带有启动画面活动的应用程序,后跟一个主要活动.启动主屏幕之前,启动画面会加载内容(数据库等).通过此主Activity,用户可以导航到多个其他子活动并返回.一些子活动开始使用startActivityForResult(),其他只是startActivity().
活动层次结构如下所示.
| Child A (startActivityForResult)
| /
|--> Splash --> Main -- Child B (startActivityForResult)
| ^ \
| | Child C (startActivity)
| \
| This Activity is currently skipped if a Notification is started
| while the app is not running or in the background.
Run Code Online (Sandbox Code Playgroud)
单击通知时,我需要实现以下行为:
startActivityForResult(),我需要在返回主活动之前将数据添加到Intent,以便它可以正确捕获结果.startActivity()我只需要返回,因为没有别的事情要做(这当前有效).我已经在SO和其他地方尝试过很多不同的建议,但是我无法成功地获得上述行为.我也试过阅读文档而不是变得更加明智,只是一点点.单击我的通知时上述案例的当前情况是:
onNewIntent().如果应用程序未运行(或在后台运行),我不会到达此处.这似乎是预期和期望的行为.setResult()这些活动.我该怎么做?onCreate() …我想检查bash数组的长度是否等于bash变量(int).我当前的代码如下所示:
if [ "${#selected_columns}" -eq "${number_of_columns}" ]; then
echo "They are equal!"
fi
Run Code Online (Sandbox Code Playgroud)
这将返回false,因为从不运行echo语句.但是,这样做会产生4:
echo "${#selected_columns[@]}"
echo "${number_of_columns}"
Run Code Online (Sandbox Code Playgroud)
这有什么不对?它与字符串与int有关吗?
所以我更新到最新的支持库,并得到了崩溃,我无法修复.我的build.gradle现在有这些依赖项:
dependencies {
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:gridlayout-v7:23.4.0'
compile 'com.android.support:support-v4:23.4.0'
compile 'com.android.support:cardview-v7:23.4.0'
compile 'com.android.support:recyclerview-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
// More stuff...
}
Run Code Online (Sandbox Code Playgroud)
我有一个工作的监听器,用于捕获点击并启动一个新的活动.这在支持库v.23.1.0中工作正常,但在23.4.0(和23.3.0)中没有:
public class IngredientItemOnClickListener implements OnClickListener
{
private Ingredient mIngredient;
public IngredientItemOnClickListener(Ingredient ingredient)
{
mIngredient= ingredient;
}
@Override
public void onClick(View view)
{
MyActivity myActivity = (MyActivity) view.getContext(); // <-- crash here
myActivity.showIngredientActivity(mIngredient);
}
}
Run Code Online (Sandbox Code Playgroud)
这个监听器只是附加到一个ImageButton,然后按钮的颜色被着色,如下所示:
Ingredient ingredient = getIngredient();
myImageButton.setOnClickListener(new IngredientItemOnClickListener(ingredient));
Drawable drawable = Tinting.tint(myActivity, R.drawable.my_icon, R.color.red);
myImageButton.setImageDrawable(drawable);
Run Code Online (Sandbox Code Playgroud)
Tinting.tint()我自己的着色功能在哪里:
public class Tinting
{
@Nullable
public static Drawable …Run Code Online (Sandbox Code Playgroud) 虽然这里的问题存在多个问题和答案,但我无法创建UIScrollView静态和动态内容(通过使用a ContainerView)并使大小正常工作.因此,我将提供一步一步的指导,直到我无法取得任何进展,有人可以提供解决方案.通过这种方式,我们将有一个可行的样本,可以一步一步地使其工作.
请注意:为方便起见,所有步骤的输出都上传到https://github.com/oysteinmyrmo/DynamicScrollablePage.可以从那里获取测试Xcode项目并进一步攻击.
更新:在@ agibson007的答案之后,最后有几个步骤可以将原始步骤修复为正常工作的解决方案.通过声明ERROR,查看最终步骤来指出错误.
目标:
有一个UIView带有各种静态UIViews和ContainerView动态内容的长滚动页面.为了完整起见,动态内容将包含一些静态UIViews和一个UITableView将扩展到其全部内容的内容.最后一个因素似乎是我最近偶然发现的各种问题的一个反复出现的主题.
方法:
UIViews,UIViewControllers和其他所需项目.第1步:项目创建
打开Xcode(8.2.1),启动一个新项目.
UIScrollView在第一个选项卡中创建.第2步:项目的初始更改
UI的更改将在第一个选项卡中完成.这个过程很大程度上受到这个答案的影响,但我们会ContainerView为动态内容添加几个项目和一个项目.
Main.storyboard,First View(即标签1)删除两个标签.UIViewController(首先命名).转到它的大小检查,从改变Fixed到Freeform,改变高度1500这只是故事板视觉变化.UIView为RootView.UIScrollView内部RootView.说出来ScrollView.约束:
我有一个简单的Android应用程序,使用我们的OpenGL渲染SDK将数据呈现给Android GLSurfaceView.由于我们提供和SDK供其他人使用,我们需要支持GLSurfaceViews的所有用例.目前,我们需要能够在重新创建所有Android视图并保持OpenGL上下文活动的同时旋转设备.这源于客户在横向和横向模式下需要不同的布局.
解决这个问题的正常方法是:
1.添加android:configChanges="orientation|screenSize"到您的活动中AndroidManifest.xml,您将没事.
这将不会在这种情况下,作为工作这不会重新上旋转的意见.因此,通过这样做,我们不能在横向和横向模式中具有不同的布局.
2.呼叫GLSurfaceView.onPause()和GLSurfaceView.onResume()从Activity.
虽然这被认为是一种很好的做法,但在这个用例中还不够,因为在执行此操作时会破坏OpenGL上下文.请注意,我们仍然这样做,它只是没有解决我们的问题.
3.使用a EGLContextFactory在旋转时保留OpenGL上下文.
这是可能的和有用的,例如在该答案中所描述的.感觉就像一个黑客,但它绝对有效.这个想法只是EGLContext在你没有一个时创建一个并重用你拥有的那个.
使用此hack时遇到的主要问题是渲染线程在GLSurfaceView分离并重新连接到视图层次结构时被销毁并重新创建.这似乎是通过查看GLSurfaceView实现来设计的.
在我们的SDK中,我们有一些线程本地存储连接到线程,所以突然得到一个新的渲染线程是不太可取的.我们可能会在渲染线程发生变化时更改某些状态,但我们想调查是否有更好的方法来执行此操作.
所以我的问题是:
答:使用EGLContextFactory"正确"的方式能够在旋转时手动保存OpenGL上下文吗?
B.有没有办法在旋转时不破坏和重新创建渲染线程(不修改源代码)?
C.在保持OpenGL上下文和渲染线程的同时,是否有更好/更简单的替代方法来实现视图销毁/重建的轮换?
额外信息:
setPreserveEGLContextOnPause(true);.Android 中的共享首选项是否总是在启动时读取并在运行时存储在内存中?如果没有,还有比这更有效的阅读偏好的方法吗?
settings = getSharedPreferences("myPrefsFile", 0);
int answer = settings.getInt("ULTIMATE_QUESTION", 42);
Run Code Online (Sandbox Code Playgroud) 我有一个以 Activity 开头的应用程序,用于在显示主 Activity 之前加载内容。启动应用程序通常会执行MyApplication--> MyLoadingActivity--> MyMainActivity。其中MyMainActivity有一个带有 RecyclerViews 和其他东西的 ViewPager。MyMainActivity当导航到应用程序中的其他 Activity 或从其他 Activity 导航时,状态会正确保存和恢复,但从MyMainActivity通知启动时,所有状态都会被清除,因为 Android 会重新启动该 Activity。
通知是通过检查远程服务器更新的服务创建的。一旦发现更新,新数据就会存储在 SQLite 数据库中,并创建有关此的通知。当我单击此通知时,MyMainActicity已启动,但状态丢失。
按照官方指南,以下是我在服务中创建通知的方法:
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.foo)
.setAutoCancel(true)
.setContentTitle("title")
.setContentText("text")
.setStyle(new NotificationCompat.BigTextStyle().bigText("A long text will go here if we are on Lollipop or above."));
Intent notifyIntent = new Intent(context, MyMainActivity.class);
notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent notifyPendingIntent = PendingIntent.getActivity(context, 0, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(notifyPendingIntent);
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); …Run Code Online (Sandbox Code Playgroud) android ×7
bash ×1
dictionary ×1
ios ×1
opengl-es ×1
picasso ×1
uiscrollview ×1
uitableview ×1
uiview ×1
vba ×1