小编sam*_*mis的帖子

Android片段:继承与组合

简而言之,我正在尝试将一个片段包装在一个包装类中,然后将包装器添加到视图寻呼机中.我在以后运行应用程序时遇到空指针问题(而不是从片段继承,并将继承的片段添加到viewpager).


描述

基本上,我正在向viewpager添加片段,在添加片段之前,我一直在继承它,并将其包装在另一个视图中,在它周围添加一个边界(页面分割).

每个页面/片段都是一个不同的类,表示要显示的视图.

这种方法的问题是我需要扩展每个片段并添加相同的样板功能,这是不理想的.我也不想创建一个基类,比如说"boardered-fragment",因为当它们从它衍生出来时(然后片段)就会知道它们(我认为).

所以,我想我也许只会使用组合,我将创建一个通用的包装类,它将包含一个类型为T的片段数据成员.这个问题是我似乎无法获得当前活动的"活动" "引用片段数据成员的上下文(在包装器中组成).

我做了一些临时调整并隐藏了getActivity(),它返回了我手动存储的活动引用的副本.然而程序崩溃是随机的(我怀疑它会).我已经尝试在我的包装器中覆盖所有可能的生命周期方法,然后在内部将在数据成员片段上调用该生命周期方法

public override void OnSomething()
{
    base.OnSomething()

    mFragment.OnSomething()
}
Run Code Online (Sandbox Code Playgroud)

但这似乎没有帮助.我猜测因为组合片段是从当前活动上下文"隐藏"的,所以我需要手动完成所有必要的操作.我只是不确定它们都是什么?

这是我正在尝试完成的快速代码示例,详细说明如下.如果需要更多代码,请告诉我,我将调整我的示例格式.


组合(在整个app中有很多问题/空指针)

public class Frag1 : Fragment
{
    ...
}

public class Activity1 : Activity
{
     public override void OnCreate(Bundle bundle)
     {
         ...

         List<Fragment> fragments = new List<Fragment>();

         fragments.Add(FragmentWrapper.NewInstance(Activity, typeof(FragmentWrapper))

         MyAdapter pagerAdapter = new MyAdapter(FragmentManager, fragments);            
         ViewPager viewPager = FindViewById<ViewPager>(Resource.Id.view_pager);
         viewPager.Adapter = pagerAdapter;
     }

    public class FragmentWrapper
    {
        Fragment mFragment;   // How to successfully wrap a fragment, but still behave properly ???? …
Run Code Online (Sandbox Code Playgroud)

android xamarin.android android-lifecycle android-fragments android-activity

0
推荐指数
1
解决办法
1428
查看次数

并发线程在套接字上发送数据的速度较慢?

下面我有一个应用程序,我试图使用C#套接字以尽可能快的方式发送尽可能多的数据.数据启动10秒后,我停止数据发送并等待控制台密钥,同时向控制台写入已发送的请求数.

当将线程数量设置为1时,我达到了更高的请求.这是日志

Attempt 1    => 86873
Attempt 2    => 107324
Attempt 3    => 97426
Attempt 4    => 94720
Attempt 5    => 97927
Attempt 6    => 94327
Attempt 7    => 94791
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,它的峰值在80,000到110,000之间.当它设置为高于1的任何值时(我试过1和2)它甚至没有达到80,000,它在10秒内达到约70-75,000.我的想法是更多的线程=更多的数据发送,因为它在幕后做了更多的工作?谁能给我一些关于此的信息?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace RDOS
{
    public class ThreadHandler
    {
        private int count = 0;
        private int threadCount = 3;
        private List<Thread> _threads = new List<Thread>();

        private string _ip;
        private int _port;

        public int RequestsSent;
        public …
Run Code Online (Sandbox Code Playgroud)

c# multithreading

-1
推荐指数
1
解决办法
76
查看次数

在using语句中处理隐式引用

当"嵌套" using语句/块时,例如a StreamWriterFileStream

using (FileStream fs = File.Open(path, FileMode.Create))
{
    using (var fsw = new StreamWriter(fs))
    {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

FileStream如果它的引用是隐含的,那么它会被妥善处理吗?如果没有,在FileStream处理时会丢弃它吗?

    using (var fsw = new StreamWriter(File.Open(path, FileMode.Create)) )
    {
        ...
    }
Run Code Online (Sandbox Code Playgroud)

此外,以下"堆叠" using语句的生成方式是否与第一个"嵌套"示例不同(嵌套的try/catch块是否依赖于语法)?

using (FileStream fs = File.Open(path, FileMode.Create))    
using (var fsw = new StreamWriter(fs))
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

c#

-1
推荐指数
1
解决办法
213
查看次数

重新分配对象时会发生什么?

使用以下实例化对象时:

Foo objFoo = new Foo();
Run Code Online (Sandbox Code Playgroud)

objFoo重新分配它的引用时,它的内存分配会发生什么?

objFoo = new Foo();
Run Code Online (Sandbox Code Playgroud)

分配给null时怎么办?

objFoo = null
Run Code Online (Sandbox Code Playgroud)

.net c# memory class object

-4
推荐指数
1
解决办法
1081
查看次数