标签: android-context

“泄露活动”是什么意思以及如何防止它?

我经常看到这样的建议:“不要这样做 X,否则你有泄露 Activity/Context 的风险。”

我实际上不知道“泄漏”是什么意思,也不知道如何知道您有泄漏的风险。谁能详细说明一下吗?

android definition android-context android-activity

3
推荐指数
1
解决办法
1411
查看次数

如何在 Android kotlin 上的片段中初始化上下文

在我的应用程序中,我想在显示时显示消息fragment
我用viewPagerBottomNavBar用于表演4fragments
我希望在单击BottomNavBar项目时显示fragment,我希望在可见性 fragment 显示消息显示
我写下面的代码:

class HomeRegisteredFragment : Fragment() {

    lateinit var toolbarTile: TextView

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

        return inflater.inflate(R.layout.fragment_home_registered, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        //Initialize
        activity?.let {
            toolbarTile = it.findViewById(R.id.homePage_toolbarTitle)
        }
        //Set title
        toolbarTile.text = resources.getString(R.string.registered)
        context?.let { ContextCompat.getColor(it, R.color.blue_active) }?.let {
            toolbarTile.setTextColor(it)
        }
    }

    override fun setUserVisibleHint(isVisibleToUser: …
Run Code Online (Sandbox Code Playgroud)

android android-context android-fragments kotlin

3
推荐指数
2
解决办法
2万
查看次数

无法创建应用程序的子类以与多个活动共享数据

我刚刚在我的游戏中完成了几项活动,现在我开始将它们连接起来使用真实的游戏数据,而不是我用来确保每件作品的测试数据.由于多个活动需要访问此游戏数据,因此我开始研究将此数据传递给我的活动的最佳方法.

我知道将putExtra与intent一起使用,但我的GameData类有相当多的数据而不仅仅是简单的键值对.除了相当多的基本数据类型外,它还有大型数组.我真的不想尝试传递所有这些,除非我可以传递整个对象,而不仅仅是键/数据对.

我读了下面这篇文章,并认为这是要走的路,但到目前为止,我还没有开始工作.

如何在Android中声明全局变量?

我创建了一个简单的测试应用程序来尝试这个方法,但它一直崩溃,我的代码看起来与上面的帖子看起来一样 - 除了我更改名称.这是我得到的错误.有人能帮助我理解我做错了什么吗?

12-23 00:50:49.762:ERROR/AndroidRuntime(608):引起:java.lang.ClassCastException:android.app.Application

它在以下声明中崩溃:

GameData newGameData = ((GameData)getApplicationContext());  
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

package mrk.examples.MainActivity;

import android.app.Application;

public class GameData extends Application {
    private int intTest;

    GameData () {
        intTest = 0;
    }

    public int getIntTest(){
        return intTest;
    }

    public void setIntTest(int value){
        intTest = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

//我的主要活动

package mrk.examples.MainActivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {

    int intLocal;

    /** Called when the activity is first created. */
    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

android android-context android-activity

2
推荐指数
1
解决办法
8199
查看次数

获取服务调用的线程中的上下文

我有以下代码:

public class DumpLocationLog extends Thread {
    LocationManager lm;
    LocationHelper loc;
    public void onCreate() {
        loc = new LocationHelper();
        lm = (LocationManager) Context.getSystemService(Context.LOCATION_SERVICE);
    }
    public void run() {
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000L, 500.0f, loc);
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望它从远程服务运行,但在行中lm = (LocationManager) Context.getSystemService(Context.LOCATION_SERVICE);我得到一个NullPointerException错误,因为它context是null.

我怎样才能获得上下文?getBaseContext()getApplicationContext()不起作用.

service multithreading android location android-context

2
推荐指数
1
解决办法
2万
查看次数

差异 - ApplicationContext()VS. ANDROID中的活动上下文..?

可能重复:
活动上下文和应用程序上下文之间的差异

我想知道之间的实际差异Application Context,并Activity ContextAndroid..?

这两个让我很困惑.请找我这两个人的区别.

android android-context applicationcontext android-activity

2
推荐指数
1
解决办法
6708
查看次数

如何删除错误:扩展Fragment时创建方法'getApplicationContext()'和'runOnUiThread(Runnable)'

当我使用getApplicationContext()那个时候eclipse给我错误create method 'getApplicationContext()'.请告诉我如何删除此错误.我也尝试使用ClassName.this那个时间错误就像change method startListening(Context) to startListening(Main)

当我使用像:measurement_index = AppSettings.getMeasureUnit(this); 然后错误像:change method getMeasureUnit(Context) to getMeasureUnit(Main)

所以请让我知道如何解决错误:

  1. create方法'getApplicationContext()'

  2. 将方法getMeasureUnit(Context)更改为getMeasureUnit(Main)

检查我的代码.

Main.class

public class Main extends Fragment implements GPSCallback{

....... 

public static Fragment newInstance(int position) {
    Main f = new Main();
    Bundle args = new Bundle();

     ...

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    final ViewGroup root = (ViewGroup) inflater.inflate(R.layout.main, null);

    /*Intent in = new Intent(Main.this,MainDisplay.class);
              // ------------> Here …
Run Code Online (Sandbox Code Playgroud)

android fragment android-context

2
推荐指数
1
解决办法
5062
查看次数

Android:从BroadcastReceiver事件发送LocalBroadcastManager的意图

我遇到了一个奇怪的情况,即从服务或MainActivity向LocalBroadcastManager注册一个intent接收器,当从PHONE_STATE接收器发送intent(在AndroidManifest.xml中定义)时,它从未收到过.

从活动|服务发送相同意图的"自我测试" - 起作用.

是否值得尝试指定LocalBroadcastManager通过AndroidManifest.xml接收的意图?


服务定义为:

    <service
     android:name=".AppService"
     android:process=":remote">
      <intent-filter>
       <action android:name="me.cmp.app.AppService" />
      </intent-filter>
    </service>
Run Code Online (Sandbox Code Playgroud)

在服务中:

 public class AppService extends Service {
 @Override
 public void onCreate() {
        super.onCreate();
        LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("me.cmp.app.statechange"));

            // self-test uses same intent sending code:
            Intent intent2 = new Intent("me.cmp.app.statechange");
            intent2.putExtra("message", "selfsend");
            LocalBroadcastManager.getInstance(this).sendBroadcastSync(intent2);

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

在清单中:

    <receiver android:name="me.cmp.app.PhoneReceiver" >
        <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE" >
            </action>
        </intent-filter>
    </receiver>        
Run Code Online (Sandbox Code Playgroud)

监听器:

public class PhoneReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    Bundle extras = intent.getExtras();
    if (extras …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-context

2
推荐指数
1
解决办法
3329
查看次数

Android获取当前正在运行的应用程序包名称

我有下面的代码可以在Android 5.0和6.0中正常运行,但是如果我在Android 4.4设备上使用此应用程序,则应用程序将崩溃。请帮我解决问题。下面是我的代码

 if (Build.VERSION.SDK_INT > 20) {
     packageName = mActivityManager.getRunningAppProcesses().get(1).processName;
 } else { 
     packageName = mActivityManager.getRunningTasks(1).get(0).topActivity.getPackageName();
 }
 Log.e("Package : ", "" + packageName);
Run Code Online (Sandbox Code Playgroud)

出现这样的错误,

E / AndroidRuntime:致命例外:主进程:com.keyboardsample,PID:23694 android.content.ActivityNotFoundException:找不到用于处理Intent的活动{act = android.intent.action.SEND typ = image / png flg = 0x1 pkg = com 。。 Activity.java:3424)位于com。android.app.Activity.startActivity(Activity.java:3627)位于android.app.Activity.startActivity(Activity.java:3627)位于com。在android.widget.AdapterView.performItemClick(AdapterView.java:299)处的keyboardsample.PhotoActivity $ 1.onItemClick(PhotoActivity.java:80)在android.widget.AbsListView.performItemClick(AbsListView.java:1113)位于android.widget.AbsListView $ PerformClick.run(AbsListView.java:2911)位于android.widget.AbsListView $ 3.run(AbsListView.java:3645)位于android.os.Handler.handleCallback(Handler.java:733)在android.os.Handler.dispatchMessage(Handler.java:95)在android.os.Looper.loop(Looper.java:136)在android.app.ActivityThread.main(ActivityThread.java:5001),位于java.lang.reflect.Method.invokeNative(本地方法),位于com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java.lang.reflect.Method.invoke(Method.java:515)处。 java:785)位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)位于dalvik.system.NativeStart.main(本地方法)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:785)处com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)处dalvik.system.NativeStart .main(本机方法)com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:785)处com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)处dalvik.system.NativeStart .main(本机方法)

android package android-context

2
推荐指数
1
解决办法
4761
查看次数

如何在片段方法中获取实现的回调的上下文

我已经为Fragment定义了下一个标题:

public class AllVideosFragment extends Fragment implements AutomaticCallback{
Run Code Online (Sandbox Code Playgroud)

在此片段的内部,我有下一个处理微调器的功能:

// Listener called when spinner item selected
        spinnerLanguages.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parentView, View v, int position, long id) {
                // Get selected row data to show on screen
                String language = ((TextView) v.findViewById(R.id.tvSpinnerRow)).getText().toString();

                if(language.equals(getString(R.string.str_en)))
                    Hawk.put(Config.TV_LANGUAGE, "en");
                if(language.equals(getString(R.string.str_es)))
                    Hawk.put(Config.TV_LANGUAGE, "es");

                //We need to retrive data again
                new AutomaticRequest().getLives(String.valueOf(Hawk.get(Config.TV_LANGUAGE)), **CONTEXT OF THE CALLBACK**);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parentView) {
                // your code here
            }

        });
Run Code Online (Sandbox Code Playgroud)

如果在微调柄方法之外使用该方法,则可以使用“ this”,但在内部我不知道需要使用什么。

new AutomaticRequest().getLives(String.valueOf(Hawk.get(Config.TV_LANGUAGE)), …
Run Code Online (Sandbox Code Playgroud)

android android-context android-fragments

2
推荐指数
1
解决办法
901
查看次数

片段中的getContext()

getContext()在哪里可以访问Fragment?我的意思是,它不是null,可以使用(例如,用于控件创建)。是不是onAttachonCreateView还是onActivityCreated

android android-context android-fragments

2
推荐指数
2
解决办法
4262
查看次数